gpt4 book ai didi

javascript - 超过26字节的CRC计算

转载 作者:行者123 更新时间:2023-12-03 09:22:59 24 4
gpt4 key购买 nike

我正在实现简单的协议(protocol),我需要从以下结构计算 CRC:

type    (1 byte, unsigned)
address (1 byte, unsigned)
dataID (4 bytes, unsigned, little-endian)
data (4 bytes, unsigned, little-endian)
data (4 bytes, unsigned, little-endian)
data (4 bytes, unsigned, little-endian)
data (4 bytes, unsigned, little-endian)
data (4 bytes, unsigned, little-endian)
-----------------
= (26 bytes)

您可以将其想象为简单的 JavaScript 对象:

var message = {
type: 0x11,
address: 0x01,
dataID: 0xFFFFFFFF,
data: [
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF
]
}

我需要从这个对象计算 CRC。不幸的是,手册中只有CRC calculation includes Message type, Slave Address Data-ID's and data values. CRC calculation is performed over 26 bytes.所以我不知道我应该做什么。

CRC 使用 CRC16-CCIT 函数计算。所以我下载了crc package来自 NPM,它已经实现了此功能。

如果您向我发布代码,那就太好了,因为我不知道该怎么做(您可以使用未声明的 crc 函数,它相当于 this )。

最佳答案

你可以从这个开始:

var crc16ccitt = require('crc').crc16ccitt;

function checksum(message) {
var buf = new Buffer(26);
buf.writeUInt8(message.type, 0);
buf.writeUInt8(message.address, 1);
buf.writeUInt32LE(message.dataID, 2);
for (var i = 0; i < 5; i++) {
buf.writeUInt32LE(message.data[i], 6 + i * 4);
}
return crc16ccitt(buf);
}

关于javascript - 超过26字节的CRC计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com