C++中二进制二进制补码整数的读值

C++中二进制二进制补码整数的读值,c++,binary,twos-complement,C++,Binary,Twos Complement,我有一个二进制数据文件。有一个几千字节的二进制头。我的任务是读取字节3000和3001。好消息是它应该读取两个值中的一个:1或5。对我来说,最困难的部分是数字被存储为2的补码整数。我将把它放在二进制模式下,但我不知道从那里可以走到哪里。 我看到一条路线,因为只有两个值,但不确定如何走。我相信我需要1=0000 0001或5=0000 0101,所以我只需要看字节3001,问题是我真的不知道如何显示单个字节的值。我需要字节3001的值,或者如果有办法访问单个位,最好在屏幕上显示字节3001为000

我有一个二进制数据文件。有一个几千字节的二进制头。我的任务是读取字节3000和3001。好消息是它应该读取两个值中的一个:1或5。对我来说,最困难的部分是数字被存储为2的补码整数。我将把它放在二进制模式下,但我不知道从那里可以走到哪里。
我看到一条路线,因为只有两个值,但不确定如何走。我相信我需要1=0000 0001或5=0000 0101,所以我只需要看字节3001,问题是我真的不知道如何显示单个字节的值。我需要字节3001的值,或者如果有办法访问单个位,最好在屏幕上显示字节3001为0000 0001或0000 0101。

对于您的任务,读取字节3000和3001,只需使用simple

使用此代码并输入abcdefg,您将获得输出d


但是在处理二进制数据时要小心。例如,如果您真的确定从3000存储了4个字节,那么就没有问题了。但是,如果在这个地方存储例如short,并且您读取int,那么它将是100%某种类型的垃圾,并且很有可能损坏下一个数据。

cin.seekg0会产生g,对吗,seekg1会产生f?所有其他代码都是一样的
cin.seekg(3);
char c;
cin >> c;
bitset < 8 > s(c);
cout << s;