1

好的,这就是交易。我一次从二进制文件中读取 1 个字节。然后我把它放在一个像这样的 int 变量中:

    l = *rbyte;
    l <<8;
    <read another byte>
    l |=*rbyte;
    l <<8;
    <read another byte>
    l |=*rbyte;
    l <<8;
    <read another byte>
    l |=*rbyte;

现在这应该可以正常工作了,对于像 00 00 00 0D 这样的二进制数据,它返回 13,对于 6 和 9 也是如此。但是对于二进制数据 00 00 80 00,它只是返回 128。当它实际上应该返回 32768 。 是什么赋予了?

4

1 回答 1

4

因为您没有将左移的结果分配给任何东西。移位运算符不一样++--它们不会自动更新他们的论点。

将您的换档线更改为

l = l << 8;
于 2012-11-21T04:58:02.417 回答