我已经习惯了C#,但我正在尝试创建一个将前4个字节读入数组的应用程序,但是我没有成功。
我还需要在文件中反转Endian,我不知道如何在Java中,在C#中它是Array.Reverse(bytes);
。我已经尝试将文件读入Int32,但是从那里我无法将它变成数组。
答案 0 :(得分:13)
就像那样:
byte[] buffer = new byte[4];
InputStream is = new FileInputStream("somwhere.in.the.dark");
if (is.read(buffer) != buffer.length) {
// do something
}
is.close();
// at this point, the buffer contains the 4 bytes...
答案 1 :(得分:1)
您可以使用ByteBuffer更改Endianness
FileChannel fc = new FileInputStream(filename).getChannel();
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteBuffer.nativeOrder()); // or whatever you want.
fc.read(bb);
bb.flip();
int n = bb.getInt();
反转整数字节的简单方法
int n = ...
int r = Integer.reverseByte(n);
类似地
long l = Long.reverseBytes(n);