java 二进制数据大端转小端

 

 1.用python写个脚本插入数据,python的字节序应该和C++一致的,但python不太熟,为了赶时间放弃此方案

2.修改java代码,增加大端转小端的功能,觉得此方案花费时间不多,靠谱点!
于是写了所谓的第一版,就是想通过将数据写入ByteArrayOutputStream中后调用其toArray方法转换为二进制数组后再将此数据顺序颠倒后插入 数据库中,现在想想此方法挺傻B的,单纯的认为转化下位置就OK了,写到一半觉得很麻烦,于是想到万能的 谷歌,搜索后发现有人推荐使用ByteBuffer,但没找到合适的例子,于是研究了下ByteBuffer的方法终于成功了,字节序转换部分的代码示例如下:
/**
 * 字段包含两个long型(长度16),一个float型(长度4),一个长度为5的float数组(长度20)
 * 即总长度=16+4+20
 * 初始化一个ByteBuffer,长度为40,且字节序设置为小端,然后将要插入的数据放到ByteBuffer中
*/
ByteBuffer buffer=ByteBuffer.allocate(40).order(ByteOrder.LITTLE_ENDIAN);
buffer.putLong(IID);
buffer.putLong(GID);
buffer.putFloat(similarity);
buffer.putFloat(f[0]);
buffer.putFloat(f[1]);
buffer.putFloat(f[2]);
buffer.putFloat(f[3]);
buffer.putFloat(f[4]);
//此方法并非真的清空,只是重新的位置设为0
buffer.clear();
//将ByteBuffer中的数据通过get方法写入一个二进制数据,将此数组插入数据库中即可
buffer.get(gfresult);

你可能感兴趣的:(java 二进制数据大端转小端)