mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-26 14:04:17 +08:00

* enable style NeedBraces * style: enable NeedBraces in checkstyle --------- Co-authored-by: Samuel Facchinello <samuel.facchinello@piksel.com>
33 lines
865 B
Java
33 lines
865 B
Java
package com.thealgorithms.others;
|
|
|
|
/**
|
|
* Generates a crc16 checksum for a given string
|
|
*/
|
|
public final class CRC16 {
|
|
private CRC16() {
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
System.out.println(crc16("Hello World!"));
|
|
}
|
|
|
|
public static String crc16(String message) {
|
|
int crc = 0xFFFF; // initial value
|
|
int polynomial = 0x1021; // 0001 0000 0010 0001 (0, 5, 12)
|
|
byte[] bytes = message.getBytes();
|
|
|
|
for (byte b : bytes) {
|
|
for (int i = 0; i < 8; i++) {
|
|
boolean bit = ((b >> (7 - i) & 1) == 1);
|
|
boolean c15 = ((crc >> 15 & 1) == 1);
|
|
crc <<= 1;
|
|
if (c15 ^ bit) {
|
|
crc ^= polynomial;
|
|
}
|
|
}
|
|
}
|
|
crc &= 0xffff;
|
|
return Integer.toHexString(crc).toUpperCase();
|
|
}
|
|
}
|