我正在尝试使用以下代码读取十六进制值。应该从dataFile中读取一个值,并且该值应该是“810c0001”。

int in;
dataFile>>hex>>in>>dec;
cout <<"I just wrote the value: "<<hex<<in<<dec<<endl;

运行程序后,输出显示为“我刚刚写了值:7fffffff”。
我注意到仅在填充最高有效位时才会出现此问题。如果将输入“8”更改为“7”,我将得到以下正确输出:“我刚刚写入了值:710c0001”我可以做些什么来读取正确的值?
谢谢

最佳答案

这是因为int的大小为4个字节,这意味着它只能存储从-2,147,483,648到2,147,483,647的值。

7fffffff = 2,147,483,647

0x810c0001值超出范围。您可以将变量类型更改为unsigned int,以便在只关心正数的情况下能够存储较大的值。

关于c++ - 读入十六进制值会在C++中给出错误的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43792959/

10-11 18:49