首部校验和
2016-10-13 13:20
148 查看
(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);
}
(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);
}
相关文章推荐
- IP首部校验和原理
- IP数据报首部校验和算法说明
- ip协议解析 首部校验和
- 关于IP数据包首部校验字段的理解
- NS3 IP首部校验和
- 自动校验文件夹及其内容shell程序(md5 校验文件夹中所有数据)
- CRC-16校验码的使用
- Struts2输入校验(二)----验证框架
- Android中带你开发一款自动爆破签名校验工具kstools
- 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆
- struts2基本输入校验
- 冒泡法排序及排序结果校验
- Struts2 访问Servlet API(ActionContext)以及校验框架
- 身份证校验程序(下)- 零基础入门学习Delphi49
- C# 校验帮助类-正则表达式
- struts 2的输入校验
- 第7章 网络层协议(1)_网络层首部
- s3c2416 4-bit ECC校验
- 网页中使用传统方法实现异步校验具体解释
- jQuery Validate校验