我目前有一个 Java ByteBuffer,它已经拥有 Big Endian 格式的数据。然后我想以 Little Endian 的形式写入二进制文件。
这是仍然在 Big Endian 中写入文件的代码:
public void writeBinFile(String fileName, boolean append) throws FileNotFoundException, IOException
{
FileOutputStream outStream = null;
try
{
outStream = new FileOutputStream(fileName, append);
FileChannel out = outStream.getChannel();
byteBuff.position(byteBuff.capacity());
byteBuff.flip();
byteBuff.order(ByteOrder.LITTLE_ENDIAN);
out.write(byteBuff);
}
finally
{
if (outStream != null)
{
outStream.close();
}
}
}
请注意,byteBuff 是一个已经以 Big Endian 格式填充的 ByteBuffer。
我最后的手段是创建另一个缓冲区并将 ByteBuffer 设置为小端,然后从原始(大端)缓冲区读取“getInt”值,并将值“setInt”到小端缓冲区的蛮力方法。我想有更好的方法...