首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#计算LRC (纵向冗余校验)

C#计算LRC (纵向冗余校验)
EN

Stack Overflow用户
提问于 2015-03-15 04:04:56
回答 1查看 4.5K关注 0票数 2

我一直在研究这个问题,所有的LRC实现似乎都没有给我正确的答案。在花了几天时间之后,我决定把我的代码放在这里,看看其他人是否能发现问题。

这是代码(C#)

代码语言:javascript
复制
        //Input Data = "31303030315E315E31303030325E315E31303030375E39395E31303032325E36353631335E"
        //LRC Answer = "30"
        private static string LRC(string Data)
        {
            int checksum = 0;
            foreach (char c in GetStringFromHex(Data))
            {
                checksum ^= Convert.ToByte(c);
            }


            string hex = checksum.ToString("X2");

            Console.WriteLine("Calculated LRC = " + hex);

            return hex;
        }





    //Supporting Function used in LRC function
    private static string GetStringFromHex(string s)
    {
        string result = "";
        string s2 = s.Replace(" ", "");
        for (int i = 0; i < s2.Length; i += 2)
        {
            result += Convert.ToChar(int.Parse(s2.Substring(i, 2), System.Globalization.NumberStyles.HexNumber));
        }
        return result;
    }

当前输出显示“计算的LRC = 33”。然而,正确的答案是"30“。有人能发现这是怎么回事吗?

任何帮助都会很棒!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-16 04:44:15

经过多次测试,确定在LRC计算过程中,LRC应包括ETX,排除STX。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29057120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档