現在Big Endian形式のデータを持つJava ByteBufferがあります。私はリトルエンディアンとしてバイナリファイルに書きたいと思っています。 byteBuffはビッグエンディアン形式に充填されたByteBufferのであることをビッグエンディアンByteBufferをJavaのリトルエンディアンに書き込む方法
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();
}
}
}
注:
はここだけのビッグエンディアンで、まだファイルを書き込むコードです。私の最後の手段は、別のバッファを作成し、そのByteBufferをリトルエンディアンに設定し、元の(ビッグエンディアン)バッファから "getInt"値を読み込み、その値をリトルエンディアンに "setInt"バッファ。私はもっと良い方法があると思います...
Apacheコモンズ(http://commons.apache.org/io/api-release/org/apache/commons/io/EndianUtils.html)を試しましたか? –
+1 Apache Commonsの場合:ホイールを改造しないでください:) – BachT