加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在Java中将大端字节ByteBuffer写入小端

发布时间:2020-12-14 06:05:58 所属栏目:Java 来源:网络整理
导读:我目前有一个 Java ByteBuffer,它已经拥有Big Endian格式的数据.然后我想写一个二进制文件作为Little Endian. 这是在Big Endian中编写文件的代码: public void writeBinFile(String fileName,boolean append) throws FileNotFoundException,IOException { F
我目前有一个 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设置为little endian然后从原始(big endian)缓冲区读取“getInt”值,并将值“setInt”设置为little endian缓冲区的强力方法.我想有更好的方法……

解决方法

Endianess对于byte []没有意义. Endianess仅适用于多字节数据类型,如short,int,long,float或double.获得正确结束的正确时间是将原始数据写入字节并读取实际格式.

如果给定了byte [],则必须解码原始数据类型并使用不同的字节序重新编码它们.我相信你会同意这是a)不容易做或理想b)不能自动完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读