读取十六进制值会在C ++中给出错误的数字

时间:2017-05-04 21:20:49

标签: c++ hex

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

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

运行程序后,输出显示为“我刚写了值:7fffffff”。 我注意到只有当最重要的位被填充时才会出现此问题。如果我将输入'8'更改为'7',我会得到正确的输出:“我只是写了值:710c0001”我能用正确的值读取什么东西? 谢谢

1 个答案:

答案 0 :(得分:2)

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

7FFFFFFF = 2147483647

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