首部校验和
(1)四位16進制數分別相加
(2)相加的結果去掉進位,保留四位16進制數
(3)保留的四位16進制數+進位
(4)得到的結果轉換成二進制
(5)取反
(6)再轉換成16進制數
具體編碼如下:
int checksum(unsigned long* buffer, int size)
{
? ? unsigned long cksum = 0;
? ? while(size>1)
? ? {
? ? ? ? cksum += *buffer++;
? ? ? ? size -= sizeof(unsigned long);
? ? }
? ? if(size)
? ? {
? ? ? ? cksum += *(char*)buffer;
? ? }
? ? cksum = (cksum>>16) + (cksum&0xffff);?
? ? cksum += (cksum>>16);?
? ? return (unsigned long)(~cksum);
}
轉載于:https://blog.51cto.com/12044869/1861445
總結
- 上一篇: Android Weekly Notes
- 下一篇: 也聊聊房价