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