来自C#的世界并刷新Java,我了解到没有无符号字节/整数。我试图找出构建自定义二进制消息的最简单方法,例如以下示例:
如您所见,某些整数值需要放入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字节字段上使用了什么?多头?
答案 0 :(得分:1)
使用byte[]
(字节数组)或BitSet
更容易做到这一点。
答案 1 :(得分:1)
您可以使用ByteBuffer
,例如: here。它应该可以更容易地操作字节数组,特别是考虑到endianess等问题。