在Java中读取小端无符号长

在Java中读取小端无符号长,java,endianness,Java,Endianness,我是Java新手(我来自C/C++),需要读取LittleEndian中存储的无符号4字节数字 我的功能不起作用(我刚刚在互联网上完成搜索,它似乎是正确的…) public long readlU32()引发IOException{ 长德沃德=0; 对于(int i=0;i

我是Java新手(我来自C/C++),需要读取LittleEndian中存储的无符号4字节数字

我的功能不起作用(我刚刚在互联网上完成搜索,它似乎是正确的…)

public long readlU32()引发IOException{
长德沃德=0;
对于(int i=0;i<4;i++)

dword=(dword您正在将字节移入,以便“最左边”的字节仍然是“最左边”的。您正在将
404
的位表示转换为小尾端,
0x94010000
转换为它在大尾端所表示的内容,即
2483093504

尝试此操作,将从末尾开始将读取的每个字节转换为
long
字节

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

dword=dword |(readU8()在java中的长度为8字节。您是否尝试使用8而不是4?您将读取最多的第一个字节向左移动。这将使第一个字节最大,因此,是的,您实现了big-endian读取。
for(int i = 0; i < 4; i++)
{
    dword = dword | (readU8() << (8 * i));
}