我正在尝试使用以下代码读取十六进制值。它应该从dataFile中读取一个值,该值应为“810c0001”。
int in;
dataFile>>hex>>in>>dec;
cout <<"I just wrote the value: "<<hex<<in<<dec<<endl;
运行程序后,输出显示为“我刚写了值:7fffffff”。 我注意到只有当最重要的位被填充时才会出现此问题。如果我将输入'8'更改为'7',我会得到正确的输出:“我只是写了值:710c0001”我能用正确的值读取什么东西? 谢谢
答案 0 :(得分:2)
那是因为int
大小是4字节,这意味着它只能存储从-2,147,483,648到2,147,483,647的值。
7FFFFFFF = 2147483647
值0x810c0001超出范围。您可以将变量类型更改为unsigned int
,以便在您只关心正数的情况下存储更大的值。