求java版CRC-ITU 查表算法. 正文贴的是C的

CRC-ITU 查表算法 C 语言代码片段
static const U16 crctab16[] =
{
0X0000, 0X1189, 0X2312, 0X329B, 0X4624, 0X57AD, 0X6536, 0X74BF,
0X8C48, 0X9DC1, 0XAF5A, 0XBED3, 0XCA6C, 0XDBE5, 0XE97E, 0XF8F7,
0X1081, 0X0108, 0X3393, 0X221A, 0X56A5, 0X472C, 0X75B7, 0X643E,
0X9CC9, 0X8D40, 0XBFDB, 0XAE52, 0XDAED, 0XCB64, 0XF9FF, 0XE876,
0X2102, 0X308B, 0X0210, 0X1399, 0X6726, 0X76AF, 0X4434, 0X55BD,
0XAD4A, 0XBCC3, 0X8E58, 0X9FD1, 0XEB6E, 0XFAE7, 0XC87C, 0XD9F5,
0X3183, 0X200A, 0X1291, 0X0318, 0X77A7, 0X662E, 0X54B5, 0X453C,
0XBDCB, 0XAC42, 0X9ED9, 0X8F50, 0XFBEF, 0XEA66, 0XD8FD, 0XC974,
0X4204, 0X538D, 0X6116, 0X709F, 0X0420, 0X15A9, 0X2732, 0X36BB,
0XCE4C, 0XDFC5, 0XED5E, 0XFCD7, 0X8868, 0X99E1, 0XAB7A, 0XBAF3,
0X5285, 0X430C, 0X7197, 0X601E, 0X14A1, 0X0528, 0X37B3, 0X263A,
0XDECD, 0XCF44, 0XFDDF, 0XEC56, 0X98E9, 0X8960, 0XBBFB, 0XAA72,
0X6306, 0X728F, 0X4014, 0X519D, 0X2522, 0X34AB, 0X0630, 0X17B9,
0XEF4E, 0XFEC7, 0XCC5C, 0XDDD5, 0XA96A, 0XB8E3, 0X8A78, 0X9BF1,
0X7387, 0X620E, 0X5095, 0X411C, 0X35A3, 0X242A, 0X16B1, 0X0738,
0XFFCF, 0XEE46, 0XDCDD, 0XCD54, 0XB9EB, 0XA862, 0X9AF9, 0X8B70,
0X8408, 0X9581, 0XA71A, 0XB693, 0XC22C, 0XD3A5, 0XE13E, 0XF0B7,
0X0840, 0X19C9, 0X2B52, 0X3ADB, 0X4E64, 0X5FED, 0X6D76, 0X7CFF,
0X9489, 0X8500, 0XB79B, 0XA612, 0XD2AD, 0XC324, 0XF1BF, 0XE036,
0X18C1, 0X0948, 0X3BD3, 0X2A5A, 0X5EE5, 0X4F6C, 0X7DF7, 0X6C7E,
0XA50A, 0XB483, 0X8618, 0X9791, 0XE32E, 0XF2A7, 0XC03C, 0XD1B5,
0X2942, 0X38CB, 0X0A50, 0X1BD9, 0X6F66, 0X7EEF, 0X4C74, 0X5DFD,
0XB58B, 0XA402, 0X9699, 0X8710, 0XF3AF, 0XE226, 0XD0BD, 0XC134,
0X39C3, 0X284A, 0X1AD1, 0X0B58, 0X7FE7, 0X6E6E, 0X5CF5, 0X4D7C,
0XC60C, 0XD785, 0XE51E, 0XF497, 0X8028, 0X91A1, 0XA33A, 0XB2B3,
0X4A44, 0X5BCD, 0X6956, 0X78DF, 0X0C60, 0X1DE9, 0X2F72, 0X3EFB,
0XD68D, 0XC704, 0XF59F, 0XE416, 0X90A9, 0X8120, 0XB3BB, 0XA232,
0X5AC5, 0X4B4C, 0X79D7, 0X685E, 0X1CE1, 0X0D68, 0X3FF3, 0X2E7A,
0XE70E, 0XF687, 0XC41C, 0XD595, 0XA12A, 0XB0A3, 0X8238, 0X93B1,
0X6B46, 0X7ACF, 0X4854, 0X59DD, 0X2D62, 0X3CEB, 0X0E70, 0X1FF9,
0XF78F, 0XE606, 0XD49D, 0XC514, 0XB1AB, 0XA022, 0X92B9, 0X8330,
0X7BC7, 0X6A4E, 0X58D5, 0X495C, 0X3DE3, 0X2C6A, 0X1EF1, 0X0F78,
};
// 计算给定长度数据的 16 位 CRC。
U16 GetCrc16(const U8* pData, int nLength)
{
U16 fcs = 0xffff; // 初始化
while(nLength>0){
fcs = (fcs >> 8) ^ crctab16[(fcs ^ *pData) & 0xff];
nLength--;
pData++;
}
return ~fcs; // 取反
}

qq_36101797
vvvv23333 大佬们 快看一看吧, , 可以加c币的----
3 个月之前 回复

1个回答

 static final int crctab16[] =
            {
                    0X0000, 0X1189, 0X2312, 0X329B, 0X4624, 0X57AD, 0X6536, 0X74BF,
                    0X8C48, 0X9DC1, 0XAF5A, 0XBED3, 0XCA6C, 0XDBE5, 0XE97E, 0XF8F7,
                    0X1081, 0X0108, 0X3393, 0X221A, 0X56A5, 0X472C, 0X75B7, 0X643E,
                    0X9CC9, 0X8D40, 0XBFDB, 0XAE52, 0XDAED, 0XCB64, 0XF9FF, 0XE876,
                    0X2102, 0X308B, 0X0210, 0X1399, 0X6726, 0X76AF, 0X4434, 0X55BD,
                    0XAD4A, 0XBCC3, 0X8E58, 0X9FD1, 0XEB6E, 0XFAE7, 0XC87C, 0XD9F5,
                    0X3183, 0X200A, 0X1291, 0X0318, 0X77A7, 0X662E, 0X54B5, 0X453C,
                    0XBDCB, 0XAC42, 0X9ED9, 0X8F50, 0XFBEF, 0XEA66, 0XD8FD, 0XC974,
                    0X4204, 0X538D, 0X6116, 0X709F, 0X0420, 0X15A9, 0X2732, 0X36BB,
                    0XCE4C, 0XDFC5, 0XED5E, 0XFCD7, 0X8868, 0X99E1, 0XAB7A, 0XBAF3,
                    0X5285, 0X430C, 0X7197, 0X601E, 0X14A1, 0X0528, 0X37B3, 0X263A,
                    0XDECD, 0XCF44, 0XFDDF, 0XEC56, 0X98E9, 0X8960, 0XBBFB, 0XAA72,
                    0X6306, 0X728F, 0X4014, 0X519D, 0X2522, 0X34AB, 0X0630, 0X17B9,
                    0XEF4E, 0XFEC7, 0XCC5C, 0XDDD5, 0XA96A, 0XB8E3, 0X8A78, 0X9BF1,
                    0X7387, 0X620E, 0X5095, 0X411C, 0X35A3, 0X242A, 0X16B1, 0X0738,
                    0XFFCF, 0XEE46, 0XDCDD, 0XCD54, 0XB9EB, 0XA862, 0X9AF9, 0X8B70,
                    0X8408, 0X9581, 0XA71A, 0XB693, 0XC22C, 0XD3A5, 0XE13E, 0XF0B7,
                    0X0840, 0X19C9, 0X2B52, 0X3ADB, 0X4E64, 0X5FED, 0X6D76, 0X7CFF,
                    0X9489, 0X8500, 0XB79B, 0XA612, 0XD2AD, 0XC324, 0XF1BF, 0XE036,
                    0X18C1, 0X0948, 0X3BD3, 0X2A5A, 0X5EE5, 0X4F6C, 0X7DF7, 0X6C7E,
                    0XA50A, 0XB483, 0X8618, 0X9791, 0XE32E, 0XF2A7, 0XC03C, 0XD1B5,
                    0X2942, 0X38CB, 0X0A50, 0X1BD9, 0X6F66, 0X7EEF, 0X4C74, 0X5DFD,
                    0XB58B, 0XA402, 0X9699, 0X8710, 0XF3AF, 0XE226, 0XD0BD, 0XC134,
                    0X39C3, 0X284A, 0X1AD1, 0X0B58, 0X7FE7, 0X6E6E, 0X5CF5, 0X4D7C,
                    0XC60C, 0XD785, 0XE51E, 0XF497, 0X8028, 0X91A1, 0XA33A, 0XB2B3,
                    0X4A44, 0X5BCD, 0X6956, 0X78DF, 0X0C60, 0X1DE9, 0X2F72, 0X3EFB,
                    0XD68D, 0XC704, 0XF59F, 0XE416, 0X90A9, 0X8120, 0XB3BB, 0XA232,
                    0X5AC5, 0X4B4C, 0X79D7, 0X685E, 0X1CE1, 0X0D68, 0X3FF3, 0X2E7A,
                    0XE70E, 0XF687, 0XC41C, 0XD595, 0XA12A, 0XB0A3, 0X8238, 0X93B1,
                    0X6B46, 0X7ACF, 0X4854, 0X59DD, 0X2D62, 0X3CEB, 0X0E70, 0X1FF9,
                    0XF78F, 0XE606, 0XD49D, 0XC514, 0XB1AB, 0XA022, 0X92B9, 0X8330,
                    0X7BC7, 0X6A4E, 0X58D5, 0X495C, 0X3DE3, 0X2C6A, 0X1EF1, 0X0F78,
            };

        public static int crc16(byte[] b) {
        int crc;
        byte da;
        crc = 0x0;
        int i = 0;
        int len = b.length;
        while (len--> 0) {
            crc = (crc >> 8) ^ crctab16[(crc ^ b[i]) & 0xff];
            ++i;
        }
        return ~crc;
    }
SuQiG
SuQiG 回复vvvv23333: 你好。请问你解决了嘛。我这边试了不行啊
3 个月之前 回复
qq_36101797
vvvv23333 谢谢大佬. . 我试试-
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于C#的CRC-8验证算法的问题
![请教各位技术大牛谁能详细讲解一下关于图片内CRC-8验证算法方法中循环代码是如何实现功能,为何要每一次与0x80进行与运算的意义](https://img-ask.csdn.net/upload/201710/30/1509331599_469955.png)
求教CRC半字节查表法原理和表的生成算法
如题 正在研究CRC16的半字节查表法,请各位大神前辈指点下这个的原理和表生成的算法
make: *** [bin] Error 57
Windows XP 下安装 Cygwin, 使用 or32 -ucLinux 工具链编译,提示 make[1]: Entering directory `/home/lijiaxing/DB504/bsp' clean ./libnx3Kbsp.a, ./libnx3Kbsp_bc.a or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/i2c_master.bc.o i2c_master.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/spi_slave.bc.o spi_slave.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/fs_config_bc.bc.o fs_config_bc.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/key_bc.bc.o key_bc.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/disp_bc.bc.o disp_bc.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/lcd_fm1602mf.bc.o lcd_fm1602mf.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/sf.bc.o sf.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/serial_flash/sf_spi.bc.o serial_flash/sf_spi.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/serial_flash/sf_spin.bc.o serial_flash/sf_spin.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/serial_flash/sf_mspi.bc.o serial_flash/sf_mspi.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/serial_flash/sf_universe.bc.o serial_flash/sf_universe.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -D _BOOT_CODE -I. -I../include -I../include/gui -c -o obj/serial_flash/sf_custom.bc.o serial_flash/sf_custom.c or32-uclinux-ar cru ./libnx3Kbsp_bc.a obj/i2c_master.bc.o obj/spi_slave.bc.o obj/fs_config_bc.bc.o o bj/key_bc.bc.o obj/disp_bc.bc.o obj/lcd_fm1602mf.bc.o obj/sf.bc.o obj/serial_flash/sf_spi.bc.o obj/s erial_flash/sf_spin.bc.o obj/serial_flash/sf_mspi.bc.o obj/serial_flash/sf_universe.bc.o obj/serial_ flash/sf_custom.bc.o or32-uclinux-ranlib ./libnx3Kbsp_bc.a make[1]: Leaving directory `/home/lijiaxing/DB504/bsp' or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -I. -I../include -I../bsp -c -o obj/boot_main.o boot_main.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -I. -I../include -I../bsp -c -o obj/boot_sf.o b oot_sf.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -I. -I../include -I../bsp -c -o obj/boot_nf.o b oot_nf.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -I. -I../include -I../bsp -c -o obj/user_eh2nx. o user_eh2nx.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -I. -I../include -I../bsp -c -o obj/user_nx2eh. o user_nx2eh.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -I. -I../include -I../bsp -c -o obj/nx_crc32.o nx_crc32.c or32-uclinux-gcc -Werror -Wall -O2 -D _JTAG_DEBUG -I. -I../include -I../bsp -c -o obj/LCD_drv.o L CD_drv.c Building the boot code ... or32-uclinux-gcc -Werror -Wall -O2 -T./NX3K_boot.ld -o DB504_BOOT ../lib/except.o obj/boot_main.o o bj/boot_sf.o obj/boot_nf.o obj/user_eh2nx.o obj/user_nx2eh.o obj/nx_crc32.o obj/LCD_drv.o -L. -L. ./lib -L../bsp -Xlinker --start-group -lnx3Kbsp_bc -lnx3Knxfs_bc -lnx3Kgui_bc -lnx3Kboot -Xlinker --end-group or32-uclinux-objcopy -O binary DB504_BOOT DB504_BOOT.bin mkrel -B -a 0x00000 -f DB504_BOOT.bin make: *** [bin] Error 57
CRC-16-CCITT-FALSE校验求解!!!
    公式:x16+x15+x5+1     宽度:16     Poly值:0x1021     初始值:0xFFFF     基准输入:false     基准输出:false     标志位:0x0000 CRC-16-CCITT-FALSE请大侠指点,如何用下边类似算法处理! 如下是CRC-16-CCITT-TURE 的处理流程 (1)、预置1个16位的寄存器为十六进制0(即全为0),称此寄存器为CRC寄存器; (2)、把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器,高八位数据不变; (3)、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位; (4)、如果移出位为0:重复第3步(再次右移一位);如果移出位为1,CRC寄存器与多 项式&H8408进行异或;(&H8408为&H1021反序后的值) (5)、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; (6)、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理; (7)、将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换; (8)、最后得到的CRC寄存器内容即为:CRC码
C# CRC8算法校验问题,如何进行校验
Combined serial number = (ID series * 524288) + serial number. Then the combined serial number must be converted to hexadecimal and insert with the least significant byte first. Below example shows the hex file created for a serial number of 14 and a ID series of 4. This gives 20000E. The serial number is followed by a CRC-8 and at the end the Intel Checksum. The rest of the characters are the same for every time. :100000000E0020E2000000000000000000000000E0 意思如下:(4*524288)+14转换成16进制后为20000e,倒一下,变成0E0020,然后进行CRC-8校验,得到E2,请问这边的E2是如何算出来的,请给出C#的算法。我在网上找了很多C#算法,都算不出是E2,是不是这边算错了?
C语言的CRC16方法转成java方法
``` unsigned int usart_get_crc16(unsigned char* pData, unsigned int usLen) { unsigned char i; unsigned int crc=0x0ffff; while (usLen-- != 0) { for (i = 0x80; i != 0; i /= 2) { if ((crc & 0x8000) != 0) { crc *= 2; crc ^= 0x8005; } else crc *= 2; if ((*pData & i) != 0) crc ^= 0x8005; } pData++; } return crc & 0x0ffff; } ```
java实现 循环冗余校验(CRC)算法
算法的要求是如下: ① 装一个16 位寄存器,所有数位均为1。 ② 取被校验串的一个字节与16 位寄存器的高位字节进行“异或”运算。运算结果放 入这个16 位寄存器。 ③ 把这个16 寄存器向右移一位。 ④ 若向右(标记位)移出的数位是1,则生成多项式1010 0000 0000 0001 和这个寄 存器进行“异或”运算;若向右移出的数位是0,则返回③。 ⑤ 重复③和④,直至移出8 位。 ⑥ 取被校验串的下一个字节 ⑦ 重复③~⑥,直至被校验串的所有字节均与16 位寄存器进行“异或”运算,并移位 8 次。 ⑧ 这个16 位寄存器的内容即2 字节CRC 错误校验码。 校验码按照先高字节后低字节的顺序存放。 我自己理解实现了下: ``` public static short crc16(byte[] data) { short crc = (short) 0xFFFF; short dxs = (short) 0xA001; byte tc; byte sbit; for (int i = 0; i < data.length; i++) { tc = (byte) ((crc & 0xff00) >> 8); crc = (short) (tc ^ data[i]); for (int r = 0; r < 8; r++) { sbit = (byte) (crc & 0x01); crc = (short) (crc >> 1); if (sbit != 0) crc = (short) (crc ^ dxs); } } System.out.println(bytesToHexString(new byte[] { (byte) ((crc & 0xff00) >> 8), (byte) (crc & 0xff) })); return crc; } //将字节数组按16进制输出 public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (stringBuilder.length() != 0) { stringBuilder.append(","); } if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } ``` 可是我计算出的接口和文档上对不上,不知道哪里有问题?
C#实现串口通讯CRC算法
![图片说明](https://img-ask.csdn.net/upload/201702/16/1487222792_633222.png) 如何实现目标字符输完,通过CRC算法 自动出来计算结果那个框
c语言版的crc16算法 帮忙转个java版!
C代码: static const INT16U ushCrcTab[] = { 0x0000,0x8005,0x800f,0x000a,0x801b,0x001e,0x0014,0x8011, 0x8033,0x0036,0x003c,0x8039,0x0028,0x802d,0x8027,0x0022, 0x8063,0x0066,0x006c,0x8069,0x0078,0x807d,0x8077,0x0072, 0x0050,0x8055,0x805f,0x005a,0x804b,0x004e,0x0044,0x8041, 0x80c3,0x00c6,0x00cc,0x80c9,0x00d8,0x80dd,0x80d7,0x00d2, 0x00f0,0x80f5,0x80ff,0x00fa,0x80eb,0x00ee,0x00e4,0x80e1, 0x00a0,0x80a5,0x80af,0x00aa,0x80bb,0x00be,0x00b4,0x80b1, 0x8093,0x0096,0x009c,0x8099,0x0088,0x808d,0x8087,0x0082, 0x8183,0x0186,0x018c,0x8189,0x0198,0x819d,0x8197,0x0192, 0x01b0,0x81b5,0x81bf,0x01ba,0x81ab,0x01ae,0x01a4,0x81a1, 0x01e0,0x81e5,0x81ef,0x01ea,0x81fb,0x01fe,0x01f4,0x81f1, 0x81d3,0x01d6,0x01dc,0x81d9,0x01c8,0x81cd,0x81c7,0x01c2, 0x0140,0x8145,0x814f,0x014a,0x815b,0x015e,0x0154,0x8151, 0x8173,0x0176,0x017c,0x8179,0x0168,0x816d,0x8167,0x0162, 0x8123,0x0126,0x012c,0x8129,0x0138,0x813d,0x8137,0x0132, 0x0110,0x8115,0x811f,0x011a,0x810b,0x010e,0x0104,0x8101, 0x8303,0x0306,0x030c,0x8309,0x0318,0x831d,0x8317,0x0312, 0x0330,0x8335,0x833f,0x033a,0x832b,0x032e,0x0324,0x8321, 0x0360,0x8365,0x836f,0x036a,0x837b,0x037e,0x0374,0x8371, 0x8353,0x0356,0x035c,0x8359,0x0348,0x834d,0x8347,0x0342, 0x03c0,0x83c5,0x83cf,0x03ca,0x83db,0x03de,0x03d4,0x83d1, 0x83f3,0x03f6,0x03fc,0x83f9,0x03e8,0x83ed,0x83e7,0x03e2, 0x83a3,0x03a6,0x03ac,0x83a9,0x03b8,0x83bd,0x83b7,0x03b2, 0x0390,0x8395,0x839f,0x039a,0x838b,0x038e,0x0384,0x8381, 0x0280,0x8285,0x828f,0x028a,0x829b,0x029e,0x0294,0x8291, 0x82b3,0x02b6,0x02bc,0x82b9,0x02a8,0x82ad,0x82a7,0x02a2, 0x82e3,0x02e6,0x02ec,0x82e9,0x02f8,0x82fd,0x82f7,0x02f2, 0x02d0,0x82d5,0x82df,0x02da,0x82cb,0x02ce,0x02c4,0x82c1, 0x8243,0x0246,0x024c,0x8249,0x0258,0x825d,0x8257,0x0252, 0x0270,0x8275,0x827f,0x027a,0x826b,0x026e,0x0264,0x8261, 0x0220,0x8225,0x822f,0x022a,0x823b,0x023e,0x0234,0x8231, 0x8213,0x0216,0x021c,0x8219,0x0208,0x820d,0x8207,0x0202 }; /********************************************************************************* * Function Name: INT16U CRC16(INT8U *pucTmpStr,INT8U uiTmpLen) * Description: 对输入字符串进行CRC校验,CRC16算法因子: x^16+x^15+x^2+1. * Input: *pucTmpStr: 要校验的字符串地址指针; * uiTmpLen: 输入要计算的长度. * Output: 无 * Return: CRC校验结果 ***********************************************************************************/ INT16U CRC16(INT8U *pucTmpStr,INT16U uiTmpLen) { INT16U ushCRC; INT16U ushCombV; INT8U *pucStr = pucTmpStr; ushCRC=0; for(;uiTmpLen!=0; uiTmpLen--) { ushCombV=(ushCRC>>8)^*pucStr++; ushCRC=(ushCRC<<8)^ushCrcTab[ushCombV]; } return ushCRC; }
16位的CRC校验 ,把C实现的,用JAVA实现
//本部分的定义需要根据不同的编译器进行修改 //U8 U16 U32分别表示8位、16位、32位无符号数值 #define U8 unsigned char #define U16 unsigned short #define U32 unsigned int #endif //C文件部分 U16 Crc16CCITT_Table[16]={ /* CRC 16bit余式表 */ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef }; /**************************************************************************** 函数名 : void Crc16CCITT(U8 *pDataIn, U32 DataLen, U8 CrcOut[2]) 描述 : 用移位的方法计算一组数字的16位CRC-CCITT校验值 输入参数 : 1、U8 *pDataIn : 要进行16位CRC-CCITT计算的数 2U32 DataLen : DataIn数组的长度 输出参数 : 1、U8 CrcOut[2] : 16位CRC-CCITT计算的结果 返回值 : 无 ****************************************************************************/ void Crc16CCITT(U8 *pDataIn, U32 DataLen, U8 CrcOut[2]) { U16 Crc = 0; U8 Temp; while (DataLen-- != 0) { Temp = ((U8)(Crc>>8))>>4; Crc <<= 4; Crc ^= Crc16CCITT_Table[Temp^(*pDataIn/16)]; Temp = ((BYTE)(Crc>>8))>>4; Crc <<= 4; Crc ^= Crc16CCITT_Table[Temp^(*pDataIn&0x0f)]; pDataIn++; } CrcOut[0] = Crc/256; CrcOut[1] = Crc%256; }
各位大佬,这段C代码小弟实在看不懂,在线求助谢谢
``` char crcCACheck(char *p, char len) { short t_short =0; for(int i=0; i<len; i++) { t_short +=*p++; t_short += t_short >>8; t_short &=0xFF; } return 0xFF - t_short; } ``` 校验的数据如下: ``` Len PhyId prim appId L/H D1 D2 D3 D4 CRC 08 8e 00 00 2f 18 ff e3 1b df ``` > Len byte the value is the number of bytes in the frame, Len/CRC bytes are not included CRC byte this byte is summed after Len field to the byte in front of CRC with carry should be 0xFF. Every frame has a CRC byte, this byte is calculated with an add-with-carry method, bytes in frame are added from Len field, together with the carry value. > **Every frame has a Len byte, which calculate the frame bytes, does not include Len/CRC byte ** 这是一段C代码(应该是C吧),写的是对crc校验,我想改写成python,一时无能为力,向各位大佬求助,十分感谢。
关于java crc32的问题,java提供的那个
比如我现在要对abc这个字符串进行crc32,那crc32.update后面括号里应该填什么呢??是"abc".getBytes()还是0100000101000002这种啊。。。文档里写的是int,是指十进制的97吗。。。
搭建apache+svn 环境,当安装serf-1.3.3.tar.bz2 时遇到下面的问题?跪求高手指教!
[root@server0 serf-1.3.3]# scons APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr/bin/apu-1-config OPENSSL=/usr/loccal/ssl buckets/deflate_buckets.c buckets/deflate_buckets.c:18:18: error: zlib.h: No such file or directory buckets/deflate_buckets.c:54: error: expected specifier-qualifier-list before 'z_stream' buckets/deflate_buckets.c: In function 'serf_bucket_deflate_create': buckets/deflate_buckets.c:90: error: 'deflate_context_t' has no member named 'stream_status' buckets/deflate_buckets.c:93: error: 'deflate_context_t' has no member named 'crc' buckets/deflate_buckets.c:95: error: 'deflate_context_t' has no member named 'zstream' buckets/deflate_buckets.c:95: error: 'deflate_context_t' has no member named 'zstream' buckets/deflate_buckets.c:111: error: 'deflate_context_t' has no member named 'stream_left' buckets/deflate_buckets.c:111: error: 'deflate_context_t' has no member named 'stream_size' buckets/deflate_buckets.c:113: error: 'deflate_context_t' has no member named 'windowSize' buckets/deflate_buckets.c:114: error: 'deflate_context_t' has no member named 'memLevel' buckets/deflate_buckets.c:115: error: 'deflate_context_t' has no member named 'bufferSize' buckets/deflate_buckets.c: In function 'serf_deflate_destroy_and_data': buckets/deflate_buckets.c:126: warning: implicit declaration of function 'inflateEnd' buckets/deflate_buckets.c:126: error: 'deflate_context_t' has no member named 'zstream' buckets/deflate_buckets.c: In function 'serf_deflate_read': buckets/deflate_buckets.c:154: error: 'deflate_context_t' has no member named 'stream_left' buckets/deflate_buckets.c:161: error: 'deflate_context_t' has no member named 'hdr_buffer' buckets/deflate_buckets.c:161: error: 'deflate_context_t' has no member named 'stream_size' buckets/deflate_buckets.c:161: error: 'deflate_context_t' has no member named 'stream_left' buckets/deflate_buckets.c:164: error: 'deflate_context_t' has no member named 'stream_left' buckets/deflate_buckets.c:166: error: 'deflate_context_t' has no member named 'stream_left' buckets/deflate_buckets.c:179: error: 'deflate_context_t' has no member named 'hdr_buffer' buckets/deflate_buckets.c:180: error: 'deflate_context_t' has no member named 'hdr_buffer'
C#如何用CRC16效验解密的字符串
需求说明: ![图片说明](https://img-ask.csdn.net/upload/201907/29/1564403450_382621.png) 客户提供类似的接口: ![图片说明](https://img-ask.csdn.net/upload/201907/29/1564403463_964387.png) 我们现在要用C#实现上面的第一张图的需求, 这个该怎么做?
JAVA String类型转byte类型 的问题
现在有一个String指令 ``` String a="01 03 03ed 0001"; ``` 我通过自己写的CRC转码方法将上述指令转码 ``` String a1=getCRC.getCRC(a); ``` 然后把两个字符串拼接起来 ``` String a2=a+" "+a1; ``` 然后获得各数值,其实就是去掉中间的空格,我就笼统的写一下。 ``` String h=a2.substring(0, 2); String h1=a2.substring(3, 5); String h2=a2.substring(6, 8); String h3=a2.substring(8, 10); String h4=a2.substring(11, 13); String h5=a2.substring(13, 15); String h6=a2.substring(16, 18); String h7=a2.substring(19, 21); ``` 然后将得到的字符串再拼接起来 ``` String h8=h+h1+h2+h3+h4+h5+h6+h7; ``` 得到的h8的数据为:010303ed0001147B 理想情况下需要呈现的buye数组为下面的方式 ``` byte b=new byte[]{ 0x01,0x03,0x03,(byte)0xed,0x00,0x01,0x14,(byte)0x7B }; ``` 现在尝试了很多种方法都无法变成上述样子,想来此求助一下,有没有大神指导一下。 补充代码中getCRC代码块 ``` public class getCRC { public static String getCRC(String data) { data = data.replace(" ", ""); int len = data.length(); if (!(len % 2 == 0)) { return "0000"; } int num = len / 2; byte[] para = new byte[num]; for (int i = 0; i < num; i++) { int value = Integer.valueOf(data.substring(i * 2, 2 * (i + 1)), 16); para[i] = (byte) value; } return getCRC(para); } /** * 计算CRC16校验码 * * @param bytes * 字节数组 * @return {@link String} 校验码 * @since 1.0 */ public static String getCRC(byte[] bytes) { // CRC寄存器全为1 int CRC = 0x0000ffff; // 多项式校验值 int POLYNOMIAL = 0x0000a001; int i, j; for (i = 0; i < bytes.length; i++) { CRC ^= ((int) bytes[i] & 0x000000ff); for (j = 0; j < 8; j++) { if ((CRC & 0x00000001) != 0) { CRC >>= 1; CRC ^= POLYNOMIAL; } else { CRC >>= 1; } } } // 结果转换为16进制 String result = Integer.toHexString(CRC).toUpperCase(); if (result.length() != 4) { StringBuffer sb = new StringBuffer("0000"); result = sb.replace(4 - result.length(), 4, result).toString(); } //高位在前地位在后 //return result.substring(2, 4) + " " + result.substring(0, 2); // 交换高低位,低位在前高位在后 return result.substring(2, 4) + " " + result.substring(0, 2); } } ```
Iso14443 CRC-a和b的校验算法细节
在网上找的要么不清楚要么没提到细节 能不能提供一下代码或者详细的说明文档 谢谢
关于openSUSE上的Ruby环境配置问题 ,清帮忙!!!
roy@localhost:~> rails -v Rails 2.3.2 roy@localhost:~> gem -v 1.3.4 roy@localhost:~> ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux] roy@localhost:~> cd ~/Projects/ roy@localhost:~/Projects> cd emporium/ roy@localhost:~/Projects/emporium> ruby script/server Missing the Rails 2.3.2 gem. Please `gem install -v=2.3.2 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. roy@localhost:~/Projects/emporium> gem install -v=2.3.2 rails /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- zlib (LoadError) from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/package.rb:10 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/format.rb:9 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:11 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:3 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:4 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:167:in `load_and_instantiate' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:88:in `[]' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:144:in `find_command' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:131:in `process_args' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in `run' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in `run' from /usr/local/bin/gem:21 roy@localhost:~/Projects/emporium> 上面好像说zlib没有?然后我 进入zlib1.2.3目录 ,执行如下: roy@localhost:~/SoftTool/zlib-1.2.3> dir 总计 1204 -rw-r--r-- 1 roy users 4559 2004-12-22 adler32.c -rw-r--r-- 1 roy users 1919 07-18 23:59 adler32.o -rw-r--r-- 1 roy users 9336 2003-06-02 algorithm.txt drwxr-xr-x 2 roy users 4096 2005-07-13 amiga drwxr-xr-x 2 roy users 4096 2005-07-18 as400 -rw-r--r-- 1 roy users 42928 2005-07-18 ChangeLog -rw-r--r-- 1 roy users 2489 2003-07-07 compress.c -rw-r--r-- 1 roy users 1532 07-18 23:59 compress.o -rwxr-xr-x 1 roy users 13167 2005-07-12 configure drwxr-xr-x 22 roy users 4096 2005-07-18 contrib -rw-r--r-- 1 roy users 13193 2005-06-13 crc32.c -rw-r--r-- 1 roy users 30568 2003-01-06 crc32.h -rw-r--r-- 1 roy users 11796 07-18 23:59 crc32.o -rw-r--r-- 1 roy users 64163 2005-07-18 deflate.c -rw-r--r-- 1 roy users 12114 2005-05-29 deflate.h -rw-r--r-- 1 roy users 13588 07-18 23:59 deflate.o -rwxr-xr-x 1 roy users 81552 07-18 23:59 example -rw-r--r-- 1 roy users 16398 2004-10-24 example.c -rw-r--r-- 1 roy users 9792 07-18 23:59 example.o drwxr-xr-x 2 roy users 4096 2005-06-13 examples -rw-r--r-- 1 roy users 15080 2004-11-27 FAQ -rw-r--r-- 1 roy users 31103 2005-07-12 gzio.c -rw-r--r-- 1 roy users 10080 07-18 23:59 gzio.o -rw-r--r-- 1 roy users 1318 2004-10-04 INDEX -rw-r--r-- 1 roy users 22164 2005-05-31 infback.c -rw-r--r-- 1 roy users 9964 07-18 23:59 infback.o -rw-r--r-- 1 roy users 12568 2004-11-13 inffast.c -rw-r--r-- 1 roy users 407 2003-01-02 inffast.h -rw-r--r-- 1 roy users 2512 07-18 23:59 inffast.o -rw-r--r-- 1 roy users 6343 2002-11-25 inffixed.h -rw-r--r-- 1 roy users 48977 2005-06-15 inflate.c -rw-r--r-- 1 roy users 5916 2004-11-13 inflate.h -rw-r--r-- 1 roy users 15716 07-18 23:59 inflate.o -rw-r--r-- 1 roy users 13756 2005-07-18 inftrees.c -rw-r--r-- 1 roy users 2373 2005-07-11 inftrees.h -rw-r--r-- 1 roy users 4044 07-18 23:59 inftrees.o -rw-r--r-- 1 roy users 90428 07-18 23:59 libz.a -rw-r--r-- 1 roy users 4141 07-18 23:59 Makefile -rw-r--r-- 1 roy users 4133 2005-07-18 Makefile.in -rw------- 1 roy users 13234 2005-07-13 make_vms.com -rwxr-xr-x 1 roy users 81411 07-18 23:59 minigzip -rw-r--r-- 1 roy users 8018 2005-05-28 minigzip.c -rw-r--r-- 1 roy users 4516 07-18 23:59 minigzip.o drwxr-xr-x 2 roy users 4096 2003-08-29 msdos drwxr-xr-x 3 roy users 4096 2005-07-13 old drwxr-xr-x 3 roy users 4096 2004-10-24 projects drwxr-xr-x 2 roy users 4096 2005-07-18 qnx -rw-r--r-- 1 roy users 5696 2005-07-18 README -rw-r--r-- 1 roy users 44027 2005-06-13 trees.c -rw-r--r-- 1 roy users 8444 1998-02-24 trees.h -rw-r--r-- 1 roy users 14600 07-18 23:59 trees.o -rw-r--r-- 1 roy users 2087 2003-07-07 uncompr.c -rw-r--r-- 1 roy users 1212 07-18 23:59 uncompr.o drwxr-xr-x 2 roy users 4096 2005-07-18 win32 -rw-r--r-- 1 roy users 9544 07-18 23:59 zconf.h -rw-r--r-- 1 roy users 9544 2005-05-28 zconf.in.h -rw-r--r-- 1 roy users 4486 2005-07-18 zlib.3 -rw-r--r-- 1 roy users 66188 2005-07-18 zlib.h -rw-r--r-- 1 roy users 7136 2005-06-13 zutil.c -rw-r--r-- 1 roy users 6859 2005-07-12 zutil.h -rw-r--r-- 1 roy users 1556 07-18 23:59 zutil.o roy@localhost:~/SoftTool/zlib-1.2.3> ./configure Checking for gcc... Building static library libz.a version 1.2.3 with gcc. Checking for unistd.h... Yes. Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf() Checking for vsnprintf() in stdio.h... Yes. Checking for return value of vsnprintf()... Yes. Checking for errno.h... Yes. Checking for mmap support... Yes. roy@localhost:~/SoftTool/zlib-1.2.3> make gcc -O3 -DUSE_MMAP -c -o example.o example.c gcc -O3 -DUSE_MMAP -c -o adler32.o adler32.c gcc -O3 -DUSE_MMAP -c -o compress.o compress.c gcc -O3 -DUSE_MMAP -c -o crc32.o crc32.c gcc -O3 -DUSE_MMAP -c -o gzio.o gzio.c gcc -O3 -DUSE_MMAP -c -o uncompr.o uncompr.c gcc -O3 -DUSE_MMAP -c -o deflate.o deflate.c gcc -O3 -DUSE_MMAP -c -o trees.o trees.c gcc -O3 -DUSE_MMAP -c -o zutil.o zutil.c gcc -O3 -DUSE_MMAP -c -o inflate.o inflate.c gcc -O3 -DUSE_MMAP -c -o infback.o infback.c gcc -O3 -DUSE_MMAP -c -o inftrees.o inftrees.c gcc -O3 -DUSE_MMAP -c -o inffast.o inffast.c ar rc libz.a adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o gcc -O3 -DUSE_MMAP -o example example.o -L. libz.a gcc -O3 -DUSE_MMAP -c -o minigzip.o minigzip.c gcc -O3 -DUSE_MMAP -o minigzip minigzip.o -L. libz.a roy@localhost:~/SoftTool/zlib-1.2.3> make install cp zlib.h zconf.h /usr/local/include cp: 无法创建普通文件“/usr/local/include/zlib.h”: 权限不够 cp: 无法创建普通文件“/usr/local/include/zconf.h”: 权限不够 make: *** [install] 错误 1 roy@localhost:~/SoftTool/zlib-1.2.3> su 口令: localhost:/home/roy/SoftTool/zlib-1.2.3 # make install cp zlib.h zconf.h /usr/local/include chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h cp libz.a /usr/local/lib cd /usr/local/lib; chmod 755 libz.a cd /usr/local/lib; if test -f libz.so.1.2.3; then \ rm -f libz.so libz.so.1; \ ln -s libz.so.1.2.3 libz.so; \ ln -s libz.so.1.2.3 libz.so.1; \ (ldconfig || true) >/dev/null 2>&1; \ fi cp zlib.3 /usr/local/share/man/man3 chmod 644 /usr/local/share/man/man3/zlib.3 localhost:/home/roy/SoftTool/zlib-1.2.3 # 上面显示这个 是不是算安装 zlib成功了?然后我运行这个还是出错: roy@localhost:~/Projects/emporium> gem install -v=2.3.2 rails /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- zlib (LoadError) from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/package.rb:10 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/format.rb:9 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:11 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:3 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:4 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:167:in `load_and_instantiate' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:88:in `[]' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:144:in `find_command' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:131:in `process_args' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in `run' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in `run' from /usr/local/bin/gem:21 roy@localhost:~/Projects/emporium> 怎么办?????????????? [b]问题补充:[/b] 谢谢 !zlib 解决了 ,但又找不到openssl了! 我安openssl了,但在ruby/ext/openssl里不能make。
802.11帧的crc校验问题
对802.11帧的crc校验是帧主体和帧头,那对帧头的校验具体是怎样的呢? 比如java的crc32这个函数用来进行crc校验 对帧主体,我直接把明文放进去:crc32.update("helloworld".getBytes()) 现在我的帧头是以二进制的位来表示的,比如00001000,这个该怎么校验呢?是crc32.update("00001000")吗?还是把这个二进制转为10进制再转为string和其他的帧头拼接起来getBytes()? 但是这样要是出现"11110001"就会出错
CRC-16-CCITT-FALSE校验求解!!!
CRC16/CCITT-TRUE 如下 公式:x16+x15+x5+1     宽度:16     Poly值:0x1021     初始值:0x0000     基准输入:true     基准输出:true     标志位:0x0000 (1)、预置1个16位的寄存器为十六进制0(即全为0),称此寄存器为CRC寄存器; (2)、把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器,高八位数据不变; (3)、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位; (4)、如果移出位为0:重复第3步(再次右移一位);如果移出位为1,CRC寄存器与多 项式&H8408进行异或;(&H8408为&H1021反序后的值) (5)、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; (6)、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理; (7)、将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换; (8)、最后得到的CRC寄存器内容即为:CRC码  CRC16/CCITT-FALSE:     公式:x16+x15+x5+1     宽度:16     Poly值:0x1021     初始值:0xFFFF     基准输入:false     基准输出:false     标志位:0x0000 请大侠指点,如何处理!
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
深深的码丨Java HashMap 透析
HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary,HashMap、TreeMap继承自AbstractMap,三者均实现Map接口 **HashTab:**同步哈希表,不支持null键或值,因为同步导致性能影响,很少被使用 **HashMap:**应用较多的非同步哈希表,支持null键或值,是键值对...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
相关热词 如何提升c#开发能力 矩阵乘法c# c#调用谷歌浏览器 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天
立即提问