【问题标题】:How to compute sum all bytes in array (CRC)如何计算数组中所有字节的总和(CRC)
【发布时间】: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

标签: c# arrays crc


【解决方案1】:

解决我的问题。

byte b = 0xFF;
for (var i = 0; i < data.Length; i++)
     b -= data[i];

return b;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2021-03-22
    • 2019-09-27
    • 1970-01-01
    • 2020-05-26
    • 2022-01-03
    • 2022-11-04
    • 1970-01-01
    相关资源
    最近更新 更多