CRC16 Java 实现

sun.misc.CRC16 也提供了一个 CRC16 校验和,但是结果和下面这个不一致,因为只是单纯的对接接口用,所以没去深究。

public static String crc16(String data) {
    int[] regs = new int[data.length()];
    for (int i = 0; i < data.length(); i++) {
        regs[i] = data.charAt(i);
    }
    int por = 0XFFFF;
    for (Integer reg : regs) {
        por = por >> 8;
        por ^= reg;
        for (int i = 0; i < 8; i++) {
            if ((por & 0x01) == 1) {
                por = por >> 1;
                por = por ^ 0xa001;
            } else {
                por = por >> 1;
            }
        }
    }
    return Integer.toHexString(por).toUpperCase();
}
if (strValue.length() < 64) {
    strValue = String.format("%0" + (64 - strValue.length()) + "d%s", 0, strValue);
}
posted @ 2021-09-02 14:17  seliote  阅读(392)  评论(0)    收藏  举报