有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    将字节移入,这样“最左边”的字节仍然是“最左边”的字节。您正在将404的位表示形式转换为小尾数形式,0x94010000转换为大尾数形式,即2483093504

    试试这个,它会将读取的每个字节从末尾开始转移到long字节

    for(int i = 0; i < 4; i++)
    {
        dword = dword | (readU8() << (8 * i));
    }