Untitled
unknown
plain_text
a year ago
1.7 kB
7
Indexable
public class CRC8WCDMA {
// Funkcja obliczająca CRC-8-WCDMA
public static int crc8Wcdma(byte[] data) {
int polynomial = 0x9B; // Generating polynomial: 0x9B (10011011)
int crc = 0x00; // Start value
for (byte b : data) {
crc ^= b; // Rozpocznij od XOR z aktualnym bajtem
for (int i = 0; i < 8; i++) { // Iteruj przez każdy bit
if ((crc & 0x80) != 0) { // Jeśli najstarszy bit jest ustawiony
crc = (crc << 1) ^ polynomial; // Przesuń w lewo i XOR z generatorem
} else {
crc <<= 1; // Tylko przesunięcie w lewo
}
crc &= 0xFF; // Zachowaj tylko 8 bitów
}
}
return crc;
}
public static void main(String[] args) {
// Przykładowy UUID
String uuid = "39223d25-e021-49cd-b490-ef111ca11d13";
// Usuń myślniki z UUID i przekonwertuj na bajty
byte[] uuidBytes = hexStringToByteArray(uuid.replace("-", ""));
// Obliczanie CRC-8-WCDMA
int crcValue = crc8Wcdma(uuidBytes);
System.out.println("Suma kontrolna CRC-8-WCDMA: " + crcValue);
}
// Funkcja konwertująca string hex na tablicę bajtów
public static byte[] hexStringToByteArray(String hex) {
int length = hex.length();
byte[] data = new byte[length / 2];
for (int i = 0; i < length; i += 2) {
data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
+ Character.digit(hex.charAt(i + 1), 16));
}
return data;
}
}Editor is loading...
Leave a Comment