我刚刚发现类中没有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的大门,我没有很多经验.