【发布时间】:2013-07-09 10:47:24
【问题描述】:
给定一个字节数组
byte[] someBytes = { 0xFF, 0xFE, 0xFE, 0xFF, 0x11, 0x00 ,0x00 ,0x00 ,0x00}
将所有字节相加最好的是什么?在上面的示例中,手动将所有字节手动添加为十六进制数字会产生 40B,所以最好我希望得到类似的结果:
byte[] byteSum = { 0x04, 0x0B }
实际上,我真正需要的只是 0x0B 部分(用于校验和)。在这种情况下,校验和由 0x0B XOR 0x55(产生 0x5E)计算。
我知道这不是正常的字节添加,但这是计算校验和的方式。
手动循环遍历字节数组并将它们相加得到整数和。
最简洁的方法是什么?
【问题讨论】:
-
您将需要使用模运算符:
0x040B % 0x0100 == 0x000B模运算符将一个数字与另一个数字相除,然后返回除法的其余部分。 -
@Nolonar 一旦我弄清楚如何获得 0x040B 应该非常有用:D 谢谢
-
我不明白添加应该如何产生 0x40B。总和为 1129 或 0x469。您对“添加”的定义是什么?
-
@SebastianNegraszus 哦,对不起,5E 实际上是前 9 个字节的校验和,然后是 0x55 异或。我会把它添加到细节中。