c# crc8 bit to lua function

嗨,我在网上和这里搜索过,想问一些熟悉LUA和C#的人,似乎唯一的解决方案是询问...

我有一个CRC 8位代码片段,本质上我需要在Lua中使用它... 我不懂Lua,但已经成功编写了一些代码来解决问题,但现在有一个新版本,需要在每个消息上进行8位CRC检查...

我不得不在谷歌上搜索CRC检查以及如何进行,并且我认为我已经掌握了概念...但我完全不知道如何在Lua中编写这个脚本...我找到了一段c#代码片段,说它是一个简单的通用8位crc计算,如果这个代码片段在Lua中,我认为我可以适当地修改它,但似乎没有直接转换的工具...

我注意到你们在以前帮助过类似的问题,并希望你们现在可以帮助我...我必须签署一个保密协议才能阅读它,因此不会张贴代码并且关于细节方面有点含糊...但如果我张贴这个非特定的一般8位CRC计算例程,也许有人可以为我转换它或在Lua中编写类似的脚本?对于我的目的,我只需要“解码”十六进制字节字符串(很确定我刚刚编造了它!)并告诉接收器CRC检查的结果应该是什么...

所以我有一个十六进制字符串: 3F 12 34 22 22 09(完全是为了举例而编造的荒谬例子)

我需要添加一个8位CRC检查结果(希望大家能理解!) 以下是我找到的一般8位检查C#代码:

private byte calcCRC8(ref byte[] data, int bytes)
{
    byte crc = 0xff;
    byte poly = 0x85;
    int i, j;

    for (i = 0; i < bytes; i++)
    {
        crc ^= data[i];
        for (j = 0; j < 8; j++)
        {
            if ((crc & 0x80) == 0x80)
            {
                crc = (byte)((crc << 1) ^ poly);
            }
            else
            {
                crc = (byte)(crc << 1);
            }
        }
    }
    return crc;
}

任何帮助都将不胜感激,

山姆

点赞
用户1180620
用户1180620

谁需要一个8位CRC,必须要求一个_特定的_ 8位CRC。在担心语言之前,第一步是确保您知道如何计算正确的CRC。文档是否提供CRC参数,如多项式、位排序、初始值、最终异或?文档是否提供一个示例消息和相应的CRC?

2017-09-04 17:48:32