Java code for CRC 16 calculation -
below hex string
string str="01312d0102d6010162000600000918000000000000000000000000007fff00150010004b0100003a200207000004040055516200050e9e000200000000005852324531533156304330000001614b00541e0c07110507320000000000000000000000000500000000000000000406000030313030313033300000000000000000000046300a1d1655000186a0ffff9eaa00000043000000000200000c000c000c000c000d000c000d000c000d000c000d000d000c000c000c000c000d000c000d000d000c000d000d000c000d000d000c000d000d000d000c000d000d000d000e000d000c000d000d000d000d000c000d000d000d000e000d000d000d000c000d000d029e029f02f102ea05300544085a07c1060f040a036404e0072f064804aa040404070510066b067205c304b302c6000d000d000d000e000d000d000e000d000e000d000d000e000d000d000e000d000e000d000e000d000e000d000d0065006300810081025102e001990082001f000e000d000e000d000e000e000d000e000d000e000e001500560062003300480068009000af00ae00ae0214048404670560007e000e000e000e000e000e000f000e000e000e000e000e005501290168000e000e000d000e000e000e000d000e000e000e000d000e000e000d000e000e000d000e000e000d000e000e000d000e000d000e000e000e000d000e000e000d000e000e000d000e000e000d000e000e000e000d000e000e000d000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000d000e000e000d000e000e000e000d000e000d000e000d000e000d000e000d000e000e000d000e000d000d000d000d000d000c000d000d000e000d000d000d000d000d000d000d000e000d000d000e000d000d000e000d000d000d000d000d00e200df00df000f000e000d007300df"; and crc : a228 appended above string. want output a228
polynomial used 0xa001
can provide me code calculate crc16
below java code
string str="01312d0102d6010162000600000918000000000000000000000000007fff00150010004b0100003a200207000004040055516200050e9e000200000000005852324531533156304330000001614b00541e0c07110507320000000000000000000000000500000000000000000406000030313030313033300000000000000000000046300a1d1655000186a0ffff9eaa00000043000000000200000c000c000c000c000d000c000d000c000d000c000d000d000c000c000c000c000d000c000d000d000c000d000d000c000d000d000c000d000d000d000c000d000d000d000e000d000c000d000d000d000d000c000d000d000d000e000d000d000d000c000d000d029e029f02f102ea05300544085a07c1060f040a036404e0072f064804aa040404070510066b067205c304b302c6000d000d000d000e000d000d000e000d000e000d000d000e000d000d000e000d000e000d000e000d000e000d000d0065006300810081025102e001990082001f000e000d000e000d000e000e000d000e000d000e000e001500560062003300480068009000af00ae00ae0214048404670560007e000e000e000e000e000e000f000e000e000e000e000e005501290168000e000e000d000e000e000e000d000e000e000e000d000e000e000d000e000e000d000e000e000d000e000e000d000e000d000e000e000e000d000e000e000d000e000e000d000e000e000d000e000e000e000d000e000e000d000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000e000d000e000e000d000e000e000d000e000e000e000d000e000d000e000d000e000d000e000d000e000e000d000e000d000d000d000d000d000c000d000d000e000d000d000d000d000d000d000d000e000d000d000e000d000d000e000d000d000d000d000d00e200df00df000f000e000d007300df";//a228"; byte arr[] = tobytearray(str); long polynomial = 0xa001; long crc = 0xffff; (byte b : arr) { crc ^= b; (int = 8; != 0; i--) { if ((crc & 0x0001) != 0) { crc = (crc >> 1) ^ polynomial; } else { crc >>= 1; } } } system.out.println(crc); }
i getting output -56289
your code fine , produce 0xa228 message (with modification below), except have feed right data , display resulting crc correctly.
to feed right data, first need convert string of hexadecimal characters half many binary bytes. give that crc routine.
second, display result in hexadecimal, not decimal.
third, byte signed, crc ^= b & 0xff; avoid sign extension.
Comments
Post a Comment