c#如何取低8位

liuccsucn 2016-12-14 03:40:49
包头 Len body CRC 包尾
1byte 1byte (len) 1byte 1byte
协议定义:此协议是指给Surface平板发送语音对话内容
包头:0xc5
数据长度:命令码到包尾
body: 即是要发送得字符串
检验和:数据长度至字符串累加后取低8位。
包尾:0x5A
...全文
704 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystal_lz 2016-12-14
  • 打赏
  • 举报
回复

/// <summary>
/// 生成校验位
/// </summary>
public static byte GetCode(byte[] by)
{
    int x = 0;
    for (int i = 0; i < by.Length; i++) x += by[i];
    return (byte)(x & 0x000000FF);
}
拜一刀 2016-12-14
  • 打赏
  • 举报
回复
引用 2 楼 liuccsucn 的回复:
c#里面啊,我测试了不对
c#与操作不是&吗?那换个方法,对256求余也是低八位吧
by_封爱 版主 2016-12-14
  • 打赏
  • 举报
回复
至于你所谓的
引用
数据长度至字符串
那是你自己定义的事了.反正把需要累加的 穿过来 我就会给你一个byte 就是你协议中的crc了.
by_封爱 版主 2016-12-14
  • 打赏
  • 举报
回复

        /// <summary>
        /// 生成校验位
        /// </summary>
        public static byte GetCode(byte[] by)
        {
            int x = 0;
            for (int i = 0; i < by.Length; i++)
            {
                x += Convert.ToInt32(by[i]);
            }
            byte[] b = BitConverter.GetBytes(x);
            return b[0];
        }

liuccsucn 2016-12-14
  • 打赏
  • 举报
回复
c#里面啊,我测试了不对
拜一刀 2016-12-14
  • 打赏
  • 举报
回复
我猜是& 0xFF

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧