可能的重复:
C++ 将十六进制字符串转换为有符号整数 https://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer
我正在尝试将十六进制字符串转换为 C++ 中的无符号整数。我的代码如下所示:
string hex("FFFF0000");
UINT decimalValue;
sscanf(hex.c_str(), "%x", &decimalValue);
printf("\nstring=%s, decimalValue=%d",hex.c_str(),decimalValue);
结果是-65536。我通常不会做太多的 C++ 编程,因此任何帮助将不胜感激。
谢谢,
杰夫
您可以使用istringstream
和hex
操纵器:
#include <sstream>
#include <iomanip>
std::istringstream converter("FFFF0000");
unsigned int value;
converter >> std::hex >> value;
您还可以使用std::oct
解析八进制值的操纵器。
我认为你得到负值的原因是你正在使用%d
格式说明符,用于有符号值。使用%u
对于无符号值应该解决这个问题。不过,更好的是使用streams库,它在编译时解决这个问题:
std::cout << value << std::endl; // Knows 'value' is unsigned.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)