php 计算的 CRC-CCITT (XModem)
php calculated CRC-CCITT (XModem)
我正在尝试在 php 中实施 CRC-CCITT (XModem) 检查但没有成功。有谁知道该怎么做?我预计 crc16('test') 将 return 0x9B06
.
这里是 XMODEM 16 位 CRC 的简单逐位计算,在 C:
#include <stdint.h>
unsigned crc16xmodem_bit(unsigned crc, void const *data, size_t len) {
if (data == NULL)
return 0;
while (len--) {
crc ^= (unsigned)(*(unsigned char const *)data++) << 8;
for (unsigned k = 0; k < 8; k++)
crc = crc & 0x8000 ? (crc << 1) ^ 0x1021 : crc << 1;
}
crc &= 0xffff;
return crc;
}
这是由我的 crcany 软件生成的,该软件还可以生成按字节和按字的版本以提高速度。
这可以很容易地转换为 php。
我正在尝试在 php 中实施 CRC-CCITT (XModem) 检查但没有成功。有谁知道该怎么做?我预计 crc16('test') 将 return 0x9B06
.
这里是 XMODEM 16 位 CRC 的简单逐位计算,在 C:
#include <stdint.h>
unsigned crc16xmodem_bit(unsigned crc, void const *data, size_t len) {
if (data == NULL)
return 0;
while (len--) {
crc ^= (unsigned)(*(unsigned char const *)data++) << 8;
for (unsigned k = 0; k < 8; k++)
crc = crc & 0x8000 ? (crc << 1) ^ 0x1021 : crc << 1;
}
crc &= 0xffff;
return crc;
}
这是由我的 crcany 软件生成的,该软件还可以生成按字节和按字的版本以提高速度。
这可以很容易地转换为 php。