endianness在Java中读取小Endian unsigned long
我是Java新手(我来自C/C++),需要读取LittleEndian中存储的无符号4字节数字
我的功能不起作用(我刚刚在互联网上完成搜索,它似乎是正确的…)
public long readlU32() throws IOException {
long dword = 0;
for(int i = 0; i < 4; i++)
dword = (dword << 8) | readU8();
return dword;
}
我在这里看到了其他问题,它应该有用。。。怎么了
注意:我必须读取的值是0x94010000,因此该值应该是404,但程序将其读取为2483093504(大端值)
# 1 楼答案
将字节移入,这样“最左边”的字节仍然是“最左边”的字节。您正在将
404
的位表示形式转换为小尾数形式,0x94010000
转换为大尾数形式,即2483093504
试试这个,它会将读取的每个字节从末尾开始转移到
long
字节