求助大神:帮忙把这个C实现的CRC16算法 改为Java实现,谢谢 CRC16 java C语言 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 c中的unsigned char,可以直接对应到java中的byte,unsigned char *则直接对应到byte[],unsinged short必须用int再处理,或者用byte[]再处理。主要是对于unsigned short和unsigned int处理起来可能要稍微麻烦一点。 static final short Crc_tbl[] = { (short)0x0000, (short)0x8005, (short)0x800f, (short)0x000a, (short)0x801b, (short)0x001e, (short)0x0014, (short)0x8011, (short)0x8033, (short)0x0036, (short)0x003c, (short)0x8039, (short)0x0028, (short)0x802d, (short)0x8027, (short)0x0022, (short)0x8063, (short)0x0066, (short)0x006c, (short)0x8069, (short)0x0078, (short)0x807d, (short)0x8077, (short)0x0072, (short)0x0050, (short)0x8055, (short)0x805f, (short)0x005a, (short)0x804b, (short)0x004e, (short)0x0044, (short)0x8041, (short)0x80c3, (short)0x00c6, (short)0x00cc, (short)0x80c9, (short)0x00d8, (short)0x80dd, (short)0x80d7, (short)0x00d2, (short)0x00f0, (short)0x80f5, (short)0x80ff, (short)0x00fa, (short)0x80eb, (short)0x00ee, (short)0x00e4, (short)0x80e1, (short)0x00a0, (short)0x80a5, (short)0x80af, (short)0x00aa, (short)0x80bb, (short)0x00be, (short)0x00b4, (short)0x80b1, (short)0x8093, (short)0x0096, (short)0x009c, (short)0x8099, (short)0x0088, (short)0x808d, (short)0x8087, (short)0x0082, (short)0x8183, (short)0x0186, (short)0x018c, (short)0x8189, (short)0x0198, (short)0x819d, (short)0x8197, (short)0x0192, (short)0x01b0, (short)0x81b5, (short)0x81bf, (short)0x01ba, (short)0x81ab, (short)0x01ae, (short)0x01a4, (short)0x81a1, (short)0x01e0, (short)0x81e5, (short)0x81ef, (short)0x01ea, (short)0x81fb, (short)0x01fe, (short)0x01f4, (short)0x81f1, (short)0x81d3, (short)0x01d6, (short)0x01dc, (short)0x81d9, (short)0x01c8, (short)0x81cd, (short)0x81c7, (short)0x01c2, (short)0x0140, (short)0x8145, (short)0x814f, (short)0x014a, (short)0x815b, (short)0x015e, (short)0x0154, (short)0x8151, (short)0x8173, (short)0x0176, (short)0x017c, (short)0x8179, (short)0x0168, (short)0x816d, (short)0x8167, (short)0x0162, (short)0x8123, (short)0x0126, (short)0x012c, (short)0x8129, (short)0x0138, (short)0x813d, (short)0x8137, (short)0x0132, (short)0x0110, (short)0x8115, (short)0x811f, (short)0x011a, (short)0x810b, (short)0x010e, (short)0x0104, (short)0x8101, (short)0x8303, (short)0x0306, (short)0x030c, (short)0x8309, (short)0x0318, (short)0x831d, (short)0x8317, (short)0x0312, (short)0x0330, (short)0x8335, (short)0x833f, (short)0x033a, (short)0x832b, (short)0x032e, (short)0x0324, (short)0x8321, (short)0x0360, (short)0x8365, (short)0x836f, (short)0x036a, (short)0x837b, (short)0x037e, (short)0x0374, (short)0x8371, (short)0x8353, (short)0x0356, (short)0x035c, (short)0x8359, (short)0x0348, (short)0x834d, (short)0x8347, (short)0x0342, (short)0x03c0, (short)0x83c5, (short)0x83cf, (short)0x03ca, (short)0x83db, (short)0x03de, (short)0x03d4, (short)0x83d1, (short)0x83f3, (short)0x03f6, (short)0x03fc, (short)0x83f9, (short)0x03e8, (short)0x83ed, (short)0x83e7, (short)0x03e2, (short)0x83a3, (short)0x03a6, (short)0x03ac, (short)0x83a9, (short)0x03b8, (short)0x83bd, (short)0x83b7, (short)0x03b2, (short)0x0390, (short)0x8395, (short)0x839f, (short)0x039a, (short)0x838b, (short)0x038e, (short)0x0384, (short)0x8381, (short)0x0280, (short)0x8285, (short)0x828f, (short)0x028a, (short)0x829b, (short)0x029e, (short)0x0294, (short)0x8291, (short)0x82b3, (short)0x02b6, (short)0x02bc, (short)0x82b9, (short)0x02a8, (short)0x82ad, (short)0x82a7, (short)0x02a2, (short)0x82e3, (short)0x02e6, (short)0x02ec, (short)0x82e9, (short)0x02f8, (short)0x82fd, (short)0x82f7, (short)0x02f2, (short)0x02d0, (short)0x82d5, (short)0x82df, (short)0x02da, (short)0x82cb, (short)0x02ce, (short)0x02c4, (short)0x82c1, (short)0x8243, (short)0x0246, (short)0x024c, (short)0x8249, (short)0x0258, (short)0x825d, (short)0x8257, (short)0x0252, (short)0x0270, (short)0x8275, (short)0x827f, (short)0x027a, (short)0x826b, (short)0x026e, (short)0x0264, (short)0x8261, (short)0x0220, (short)0x8225, (short)0x822f, (short)0x022a, (short)0x823b, (short)0x023e, (short)0x0234, (short)0x8231, (short)0x8213, (short)0x0216, (short)0x021c, (short)0x8219, (short)0x0208, (short)0x820d, (short)0x8207, (short)0x0202 }; /* 获取校验码 */ static short GetCRC(byte[] buf, int len) { short crc = 0, tmpWord = 0; for (int i = 0; i < len; i++) { tmpWord = (short)(crc << 8); crc >>>= 8; crc &= 0xff; crc ^= (buf[i]&0xFF); tmpWord ^= Crc_tbl[crc]; crc = tmpWord; } tmpWord = crc; crc = (short)((tmpWord << 8) | (tmpWord >>> 8)); return crc; } public static void main(String[] args) { byte a[] = new byte[] { (byte) 0x1b, (byte) 0x10, (byte) 0xa4, (byte) 0x00, (byte) 0x05 }; System.out.format("%d\n", GetCRC(a, 5));// 输出972 } 50分求助!将 log4j 分别输出,控制台输出info,文件里输出debug,不要用XML的配置 自定义classloader的问题 java处理TXT 关于JTable的问题 java的具体环境配置如何 怎么使位图适应组件大小?GG帮帮忙喽~^_^ JAVA中,容器被重新设置后,哪种布局管理器的容器中的组件大小不随容器大小的变化而改变? 请教如何用java读写串口. 急,大给分 偶想学习J,有好书推荐么? java中遇到的编码问题 函数问题,求解
(short)0x0000, (short)0x8005, (short)0x800f, (short)0x000a, (short)0x801b,
(short)0x001e, (short)0x0014, (short)0x8011, (short)0x8033, (short)0x0036, (short)0x003c, (short)0x8039, (short)0x0028,
(short)0x802d, (short)0x8027, (short)0x0022, (short)0x8063, (short)0x0066, (short)0x006c, (short)0x8069, (short)0x0078,
(short)0x807d, (short)0x8077, (short)0x0072, (short)0x0050, (short)0x8055, (short)0x805f, (short)0x005a, (short)0x804b,
(short)0x004e, (short)0x0044, (short)0x8041, (short)0x80c3, (short)0x00c6, (short)0x00cc, (short)0x80c9, (short)0x00d8,
(short)0x80dd, (short)0x80d7, (short)0x00d2, (short)0x00f0, (short)0x80f5, (short)0x80ff, (short)0x00fa, (short)0x80eb,
(short)0x00ee, (short)0x00e4, (short)0x80e1, (short)0x00a0, (short)0x80a5, (short)0x80af, (short)0x00aa, (short)0x80bb,
(short)0x00be, (short)0x00b4, (short)0x80b1, (short)0x8093, (short)0x0096, (short)0x009c, (short)0x8099, (short)0x0088,
(short)0x808d, (short)0x8087, (short)0x0082, (short)0x8183, (short)0x0186, (short)0x018c, (short)0x8189, (short)0x0198,
(short)0x819d, (short)0x8197, (short)0x0192, (short)0x01b0, (short)0x81b5, (short)0x81bf, (short)0x01ba, (short)0x81ab,
(short)0x01ae, (short)0x01a4, (short)0x81a1, (short)0x01e0, (short)0x81e5, (short)0x81ef, (short)0x01ea, (short)0x81fb,
(short)0x01fe, (short)0x01f4, (short)0x81f1, (short)0x81d3, (short)0x01d6, (short)0x01dc, (short)0x81d9, (short)0x01c8,
(short)0x81cd, (short)0x81c7, (short)0x01c2, (short)0x0140, (short)0x8145, (short)0x814f, (short)0x014a, (short)0x815b,
(short)0x015e, (short)0x0154, (short)0x8151, (short)0x8173, (short)0x0176, (short)0x017c, (short)0x8179, (short)0x0168,
(short)0x816d, (short)0x8167, (short)0x0162, (short)0x8123, (short)0x0126, (short)0x012c, (short)0x8129, (short)0x0138,
(short)0x813d, (short)0x8137, (short)0x0132, (short)0x0110, (short)0x8115, (short)0x811f, (short)0x011a, (short)0x810b,
(short)0x010e, (short)0x0104, (short)0x8101, (short)0x8303, (short)0x0306, (short)0x030c, (short)0x8309, (short)0x0318,
(short)0x831d, (short)0x8317, (short)0x0312, (short)0x0330, (short)0x8335, (short)0x833f, (short)0x033a, (short)0x832b,
(short)0x032e, (short)0x0324, (short)0x8321, (short)0x0360, (short)0x8365, (short)0x836f, (short)0x036a, (short)0x837b,
(short)0x037e, (short)0x0374, (short)0x8371, (short)0x8353, (short)0x0356, (short)0x035c, (short)0x8359, (short)0x0348,
(short)0x834d, (short)0x8347, (short)0x0342, (short)0x03c0, (short)0x83c5, (short)0x83cf, (short)0x03ca, (short)0x83db,
(short)0x03de, (short)0x03d4, (short)0x83d1, (short)0x83f3, (short)0x03f6, (short)0x03fc, (short)0x83f9, (short)0x03e8,
(short)0x83ed, (short)0x83e7, (short)0x03e2, (short)0x83a3, (short)0x03a6, (short)0x03ac, (short)0x83a9, (short)0x03b8,
(short)0x83bd, (short)0x83b7, (short)0x03b2, (short)0x0390, (short)0x8395, (short)0x839f, (short)0x039a, (short)0x838b,
(short)0x038e, (short)0x0384, (short)0x8381, (short)0x0280, (short)0x8285, (short)0x828f, (short)0x028a, (short)0x829b,
(short)0x029e, (short)0x0294, (short)0x8291, (short)0x82b3, (short)0x02b6, (short)0x02bc, (short)0x82b9, (short)0x02a8,
(short)0x82ad, (short)0x82a7, (short)0x02a2, (short)0x82e3, (short)0x02e6, (short)0x02ec, (short)0x82e9, (short)0x02f8,
(short)0x82fd, (short)0x82f7, (short)0x02f2, (short)0x02d0, (short)0x82d5, (short)0x82df, (short)0x02da, (short)0x82cb,
(short)0x02ce, (short)0x02c4, (short)0x82c1, (short)0x8243, (short)0x0246, (short)0x024c, (short)0x8249, (short)0x0258,
(short)0x825d, (short)0x8257, (short)0x0252, (short)0x0270, (short)0x8275, (short)0x827f, (short)0x027a, (short)0x826b,
(short)0x026e, (short)0x0264, (short)0x8261, (short)0x0220, (short)0x8225, (short)0x822f, (short)0x022a, (short)0x823b,
(short)0x023e, (short)0x0234, (short)0x8231, (short)0x8213, (short)0x0216, (short)0x021c, (short)0x8219, (short)0x0208,
(short)0x820d, (short)0x8207, (short)0x0202 }; /* 获取校验码 */
static short GetCRC(byte[] buf, int len) {
short crc = 0, tmpWord = 0;
for (int i = 0; i < len; i++) {
tmpWord = (short)(crc << 8);
crc >>>= 8;
crc &= 0xff;
crc ^= (buf[i]&0xFF);
tmpWord ^= Crc_tbl[crc];
crc = tmpWord;
}
tmpWord = crc;
crc = (short)((tmpWord << 8) | (tmpWord >>> 8));
return crc;
} public static void main(String[] args) {
byte a[] = new byte[] { (byte) 0x1b, (byte) 0x10, (byte) 0xa4, (byte) 0x00, (byte) 0x05 };
System.out.format("%d\n", GetCRC(a, 5));// 输出972
}