在Java中设置自定义二进制数据消息的最简单方法是什么?

时间:2012-03-20 18:59:11

标签: java binary byte bit

来自C#的世界并刷新Java,我了解到没有无符号字节/整数。我试图找出构建自定义二进制消息的最简单方法,例如以下示例:

enter image description here

如您所见,某些整数值需要放入3位插槽。其他值是单位标志或其他大小字段。根据我的阅读,我应该在“下一个更大”的原语中工作,例如使用逐位运算符在整数中构建二进制字节。还有其他方法吗?我已经按照我在其他地方找到的一些例子(例如:这个例子与上图不匹配)来获得第一个字节结构:

shiftedValue1 = (value1 & 0xFF) << 5;
shiftedValue2 = (Value2 & 0xFF) << 2;
shiftedValue3 = (Value3 & 0xFF) << 1;
shiftedValue4 = (Value4 & 0xFF);
finalvalue = (shiftedValue1 & 0xFF) | (shiftedValue2 & 0xFF) | (shiftedValue3 & 0xFF) | (shiftedValue4 & 0xFF);

有没有更好的方法来构造这些字节?我在4字节字段上使用了什么?多头?

2 个答案:

答案 0 :(得分:1)

使用byte[](字节数组)或BitSet更容易做到这一点。

答案 1 :(得分:1)

您可以使用ByteBuffer,例如: here。它应该可以更容易地操作字节数组,特别是考虑到endianess等问题。