java随机访问文件的结尾问题
我必须从二进制文件中读取字节、整数和长数据大小的数据。我用RandomAccessFile
的方法readInt
,readLong
,readByte
读了它。问题是这个系统的终端
(Windows 8.1)和文件的endiannes是不同的。例如,文件中的这个数字实际上是数字2
,但它从系统中读取为33554432
如何解决这个问题,并能够使用RandomAccessFile
的方法读取数据块
你可以在下面搜索框中键入要查询的问题!
我必须从二进制文件中读取字节、整数和长数据大小的数据。我用RandomAccessFile
的方法readInt
,readLong
,readByte
读了它。问题是这个系统的终端
(Windows 8.1)和文件的endiannes是不同的。例如,文件中的这个数字实际上是数字2
,但它从系统中读取为33554432
如何解决这个问题,并能够使用RandomAccessFile
的方法读取数据块
# 1 楼答案
不,他们是一样的。看看数据。最低有效字节位于起始位置。这就是小endian,也就是英特尔endian。(不Windows endianness,AFAIK除了特定平台外不存在)
问题是文件和系统的尾端是小尾端,而
RandomAccessFile
是大尾端在Java中解决这个问题的方法是通过NIO和
ByteBuffer
,使用本机字节顺序而不是默认顺序