在c ++中读取二进制2的补码整数的值

时间:2015-10-13 08:20:41

标签: c++ binary twos-complement

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

1 个答案:

答案 0 :(得分:0)

对于您的任务“读取字节3000和3001”,只需使用简单的seekg

cin.seekg(3);
char c;
cin >> c;
bitset < 8 > s(c);
cout << s;

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

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