php计算CRC-CCITT(XModem)

时间:2016-10-03 19:38:58

标签: php crc xmodem

我试图在php中实现CRC-CCITT(XModem)检查但没有成功。有谁知道怎么做?我预计crc16(' test')将返回0x9B06

1 个答案:

答案 0 :(得分:0)

以下是C:

中XMODEM 16位CRC的简单逐位计算
#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。