有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java随机访问文件的结尾问题

我必须从二进制文件中读取字节、整数和长数据大小的数据。我用RandomAccessFile的方法readIntreadLongreadByte读了它。问题是这个系统的终端 (Windows 8.1)和文件的endiannes是不同的。例如,文件中的这个数字enter image description here实际上是数字2,但它从系统中读取为33554432

如何解决这个问题,并能够使用RandomAccessFile的方法读取数据块


共 (1) 个答案

  1. # 1 楼答案

    the problem is that the endianness of the system ... and the endianness of the file are different.

    不,他们是一样的。看看数据。最低有效字节位于起始位置。这就是小endian,也就是英特尔endian。(Windows endianness,AFAIK除了特定平台外不存在)

    问题是文件和系统的尾端是小尾端,而RandomAccessFile是大尾端

    在Java中解决这个问题的方法是通过NIO和ByteBuffer,使用本机字节顺序而不是默认顺序