2015-05-19 7 views
-1

У меня возникли проблемы с crc-калькулятором с шестнадцатеричным значением. На самом деле, у меня есть хороший код, который правильно вычисляет вход ASCII.Андроид Java CRC Шестнадцатеричный ввод

Но hexstring, который мне нужно вычислить «44007A0004 ...», не может быть преобразован в символ ASCII. Как я могу изменить свою функцию для вычисления шестнадцатеричной входной строки crc?

public String CRC_CCITT(int flag,String str) { 
     int crc = 0x00;   // initial value 
     int polynomial = 0x1021;  
     byte[] bytes = str.getBytes(); 

    switch(flag){ 
    case 1: 
     crc=0x00; 
     break; 
    case 2: 
     crc=0xFFFF; 
     break; 
    case 3: 
     crc=0x1D0F; 
     break; 

    } 
    for (int index = 0 ; index< bytes.length; index++) { 
     byte b = bytes[index]; 
     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; 
    str = Integer.toHexString(crc); 
    return str;    
}  
+0

Вы знаете спецификацию как CRC должен вычисляться для большего ввода? – Robert

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^