C++ 十六进制字符串到 unsigned int

标签 c++ hex int

<分区>

Possible Duplicate:
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++ 编程,因此我们将不胜感激。

谢谢, 杰夫

最佳答案

您可以使用 istringstreamhex 操纵器执行此操作:

#include <sstream>
#include <iomanip>

std::istringstream converter("FFFF0000");
unsigned int value;
converter >> std::hex >> value;

您还可以使用 std::oct 操纵符来解析八进制值。

我认为您得到负值的原因是您使用的是 %d 格式说明符,它用于有符号值。对无符号值使用 %u 应该可以解决这个问题。不过,更好的方法是使用流库,它会在编译时解决这个问题:

std::cout << value << std::endl; // Knows 'value' is unsigned.

关于C++ 十六进制字符串到 unsigned int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801146/

相关文章:

c++ - std::string 到 char*

python - 使用 Python 转义序列格式化字符串

c++ - 从 int 到 char,逐字节发送

C: 将 int 转换为 size_t

c++ - 超过 5 个参数的绳索表达模板无法正确内联

c++ - 带堆内存的 glBuffer

c++ - 跨平台自动运行

java - Java 中字节的编码/解码是如何工作的?

python - 在 Python 3 中将字节转换为十六进制字符串的正确方法是什么?

Java 在 int 或 String 之间返回(未知返回类型)