0
我正在处理某些事情,并且我需要计算每个发送的数据的校验和。此校验和是低2个字节的所有字节查找缓冲区中所有字节的总和
的4字节的总和假设我有数据为:
Bytebuffer buffer = Bytebuffer.allocate(128); // assume i have filled buffer with some data
下面是如何,我发现所有字节的总和,然后越来越低2字节。
byte array = buffer.array();
int checksum = 0;
for(byte b : array){
checksum += (int)b
}
checksum = (checksum & 0xff00ff) + ((checksum >> 0x08) & 0xff00ff);
short result = (short) (checksum + (checksum >> 0x10));
但是,侦听这个数据的应用程序告诉我校验和是错误的。我的思维逻辑有什么错误?在此先感谢
谢谢,它似乎像原来的缓冲区正在修改虽然。有没有办法呢? –
这就是ByteBuffer的工作原理。它们就像您读写时更新定位标记的文件。这不是你应该尽量避免的。 –