为什么RandomAccessFile类中没有readUnsignedInt?

5Yr*_*DBA 10 java

我刚刚发现类中没有readUnsignedInt()方法RandomAccessFile.为什么?是否有任何解决方法从文件中读取unsigned int?

编辑:

我想从文件中读取unsigned int并将其放入一个长空间.

EDIT2:

不能使用readLong().它将读取8个字节而不是4个字节.文件中的数据在4字节范围内具有无符号整数.

EDIT3:

在这里找到答案:http://www.petefreitag.com/item/183.cfm

Edit4:

如果数据文件是little-endian怎么样?我们需要先换位?

mus*_*iKk 19

我这样做:

long l = file.readInt() & 0xFFFFFFFFL;
Run Code Online (Sandbox Code Playgroud)

位操作是必要的,因为向上扩展将延伸一个负号.


关于字节序.据我所知,Java中的所有I/O都是以大端方式完成的.当然,通常没关系(字节数组,UTF-8编码等不受字节顺序影响)但是很多方法DataInput都是.如果您的号码以小端存储,则必须自行转换.我知道标准Java中唯一允许配置字节顺序的工具是ByteBuffer通过order()方法,但是你打开NIO的大门,我没有很多经验.