use*_*243 7 java bytebuffer endianness
我目前有一个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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,byteBuff是一个以Big Endian格式填充的ByteBuffer.
我的最后一种方法是创建另一个缓冲区并将ByteBuffer设置为little endian然后从原始(big endian)缓冲区读取"getInt"值,并将值"setInt"设置为little endian缓冲区的强力方法.我想有更好的方法......
Endianess对于byte []没有意义.Endianess仅适用于多字节数据类型,如short,int,long,float或double.获得正确结束的正确时间是将原始数据写入字节并读取实际格式.
如果给定了byte [],则必须解码原始数据类型并使用不同的字节序重新编码它们.我相信你会同意这是a)不容易做或理想b)不能自动完成.
| 归档时间: |
|
| 查看次数: |
15758 次 |
| 最近记录: |