小编mor*_*rph的帖子

在C++中将十六进制字符串转换为unsigned char

我想将字符串中的十六进制表示转换为unsigned char变量,如下所示:

std::stringstream ss;
uint8_t x;
ss << "1f";
ss >> std::hex >> x;  // result: x = 0x31 (=49 in decimal and ='1' as char)
Run Code Online (Sandbox Code Playgroud)

显然,我假设转换会导致x = 0x1f(十进制= 31),因为0x1f小于0xff,这是可以存储在8位无符号字符中的最大值.相反的是,在转换中只使用了我的字符串的前8位.

有人可以向我解释为什么会发生这种情况以及如何解决这个问题?

c++ string hex stringstream

4
推荐指数
1
解决办法
1235
查看次数

标签 统计

c++ ×1

hex ×1

string ×1

stringstream ×1