官方提醒4 2023-03-05 15:59 采纳率: 68.2%
浏览 56
已结题

C#中计算16进制的校验位

最近刚学C# 目前有一组通过串口过来的数据, 我该怎么弄让49 前面的数据传入到变量 然后再相加
68 20 DF 68 02 02 35 41 49 16

68+20+DF+68+02+02+35+41+49+16=249 只用总和的后两位

img

请直接贴代码 如果代码可以正常跑通达到我的需求,我会采纳,谢谢

  • 写回答

4条回答 默认 最新

  • dahe0825 2023-03-05 16:13
    关注

    参考GPT的内容和自己的思路,可以使用以下代码计算给定16进制字符串的校验位:

    string hexString = "6820DF68020235414916";
    int sum = 0;
    
    // 将每两个字符解析为一个16进制数并相加
    for (int i = 0; i < hexString.Length; i += 2)
    {
        sum += Convert.ToInt32(hexString.Substring(i, 2), 16);
    }
    
    // 只保留总和的最后两位并转换为16进制字符串
    string checksum = (sum % 256).ToString("X2");
    
    

    将16进制字符串存储在hexString变量中,然后使用一个循环迭代字符串中的每个16进制数并将它们相加。最后,我们将总和模256并只保留最后两位,然后将其转换为一个16进制字符串以表示校验位。在这个例子中,校验位应该是F9。

    回答不易,还请采纳!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 3月5日