Tôi hiện đang có một ByteBuffer Java đã có dữ liệu ở định dạng Big Endian. Sau đó tôi muốn viết vào một tập tin nhị phân như Little Endian.Làm thế nào để viết ByteBuffer cuối cùng lớn đến ít endian trong Java
Dưới đây là đoạn code mà chỉ viết các tập tin vẫn còn trong 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();
}
}
}
Lưu ý rằng byteBuff là một ByteBuffer đã được lấp đầy ở định dạng Big Endian. Khu nghỉ mát cuối cùng của tôi là phương pháp bạo lực tạo ra một bộ đệm khác và thiết lập ByteBuffer thành ít endian và sau đó đọc các giá trị "getInt" từ bộ đệm gốc (lớn cuối) và "setInt" giá trị cho endian nhỏ đệm. Tôi tưởng tượng có một cách tốt hơn ...
Bạn đã thử Apache commons (http://commons.apache.org/io/api-release/org/apache/commons/io/EndianUtils.html) chưa? –
+1 cho Apache Commons: không phát minh lại bánh xe :) – BachT