c++ - 将字符串存储为十六进制而不转换
问题描述
我有一个字符串值:
string str = "2018";
现在我必须以unsigned char
十六进制表示形式存储在数组中,但不能真正转换为十六进制:
unsigned char data [2]; //[0x20,0x18]
如果我这样做
data[0] = 0x20;
data[1] = 0x18;
它有效,但我的输入是string
,我该如何解决?
编辑
如果我的输入unsigned char
不是string
喜欢
unsigned char y1 = 20;
unsigned char y2 = 18;
有没有更好的办法?。
解决方案
也许你可以尝试这样的事情:
#include <iostream>
int main()
{
std::string s = "2018";
unsigned i;
std::sscanf(s.c_str(), "%04x", &i);
unsigned char data[2];
data[0] = i >> 8;
data[1] = i;
std::cout << std::hex << (int)data[0] << " " << (int)data[1] << std::endl;
return 0;
}
印刷:
20 18
推荐阅读
- ios - 当应用被用户杀死时如何重新启动位置更新?
- javascript - 如何根据字体真棒类设置CSS属性?
- python - 将数据框中的数组拉伸为相同的大小
- zig - 在 Zig 中,你如何判断一个帧是否代表一个完全执行的函数?
- assembly - 在arm组装中,堆栈是一个单独的内存单元还是主内存的一个分区?
- php - 使用内部代码或在 sql 中导入之前的 UTF-8 到 HTML 字符十进制代码
- python -
无法解码 JSON 对象:未终止的字符串开始于:第 1 行第 10 列(字符 9)
- javascript - 使用 div 的高度对 div 进行冒泡排序失败
- python-3.x - 如何在一行python3中组合多个if语句
- c++ - 在 cpp 中创建一个变量 const 然后将其地址提供给一个指针,但取消引用不会改变变量,为什么?