我目前有一个以Big Endian格式存储数据的Java ByteBuffer。我想将其作为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是一个以大端格式填充的ByteBuffer。
我的最后一招是采用暴力方法创建另一个缓冲区,并将该ByteBuffer设置为小端序,然后从原始(大端序)缓冲区中读取“getInt”值,并将该值“setInt”到小端序缓冲区中。我想应该有更好的方法...