可能重复:
C++将十六进制字符串转换为有符号整数
我正在尝试将十六进制字符串转换为C++中的unsigned int.我的代码看起来像这样:
string hex("FFFF0000");
UINT decimalValue;
sscanf(hex.c_str(), "%x", &decimalValue);
printf("\nstring=%s, decimalValue=%d",hex.c_str(),decimalValue);
Run Code Online (Sandbox Code Playgroud)
结果是-65536.我通常不会做太多的C++编程,所以任何帮助都会受到赞赏.
谢谢,杰夫
tem*_*def 21
你可以使用istringstream和hex操纵器来做到这一点:
#include <sstream>
#include <iomanip>
std::istringstream converter("FFFF0000");
unsigned int value;
converter >> std::hex >> value;
Run Code Online (Sandbox Code Playgroud)
您还可以使用std::oct操纵器来解析八进制值.
我认为你得到负值的原因是你正在使用%d格式说明符,它用于有符号值.使用%u无符号值应解决此问题.但更好的方法是使用流库,它在编译时计算出来:
std::cout << value << std::endl; // Knows 'value' is unsigned.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37717 次 |
| 最近记录: |