C# 累加校验和

网上其他的累加校验和基本都是返回最后一字节的byte,而我的需求则是最后两字节,接下来就看看怎么实现吧

	    int cks = 0;
            foreach (byte item in data)
            {
                cks = (cks + item) % 0xffff ;
            }

            data[data.Length - 2] = (byte)((cks & 0xff00) >> 8);//取校验和高8位
            data[data.Length - 1] = (byte)(cks & 0xff);//低8位

其中data是一个byte[],先累加到int cks变量,取余0xffff保证不会溢出,然后移位相与,取出高八位和低八位,放到最后

如果是需要返回一个uint16,则将两个byte放入一个byte数组,然后执行BitConverter.ToInt16()方法即可返回一个UInt16。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值