【发布时间】:2020-04-02 12:36:44
【问题描述】:
我试图对数组中的所有字节求和 (CRC)。
我有一个数组0x3A, 0x07, 0x00, 0x00, 0x80, 0x04。
该数组的 CRC 为 3A。
或者这个数组0x3A 0x09 0x00 0x00 0x80 0x03 0x01 0x00。 CRC 等于 = 38。
我检查了很多算法,但没有人不给我这个结果。
我已经检查过了
(IEnumerable<byte> array) => (byte)(array.Sum(arr => arr) & 0xFF);
还有这个:
byte crc = 0;
for (var i = 0; i < data.Length; i++)
crc = crc8Table[(crc ^ data[i]) & 0xFF];
return crc;
或者这个:
byte checksum = 0x00;
for (int i = 0; i < data.Length; i++)
checksum ^= data[i];
但是没有人尝试没有给我一个真实的结果。我怎样才能找到一种算法,它将为我提供数组的 CRC 3A 或 38。
【问题讨论】:
-
Sooo.. 你是如何计算这些 CRC 的?
-
OP 要求我们对 CRC 进行逆向工程。
-
这个数据包是我从 WireShark 得到的。我正在编写一个程序,我需要了解如何获得此结果。
-
什么样的数据包?
-
这是设备
0x3A, 0x07, 0x00, 0x00, 0x80, 0x04, 0x3A的命令,最后一个索引是CRC