我正在尝试为消息实现校验和。规范是:
The checksum is implemented such that the entire message wrapper and the message data, excluding the checksum, is a result of a simple binary addition truncated to four bytes.
不过,恐怕我不知道如何用 Java 来做。如果有任何建议,我将不胜感激。
M.
最佳答案
它们可能意味着所有字节的简单无符号加法(假设 8 位字节是您与之交互的最小单位):
byte[] data = getTheDataFromSomewhere();
long checksum = 0;
for (int i = 0; i < data.length; i++) {
checksum += (data[i] & 0xFF);
}
checksum = checksum & 0xFFFFFFFFL; // truncate to 4 byte
您也可以在那里使用 int
,但这会导致负数。按位计算是等价的,但这样更容易比较值。
关于java - Java 中的二进制加法校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816361/