0

I'm having some trouble about crc-calculator with Hexadecimal value. In fact, I have this good code that calculate correctly with ASCII input.

But hexstring that I need to calculate "44007A0004 ... " cannot be converted to ASCII char. How I can change my function to calculate hex input string 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;            
}    
Mureinik
  • 297,002
  • 52
  • 306
  • 350

1 Answers1

1

Refer to this answer:

Convert a string representation of a hex dump to a byte array using Java?

Add the hexStringToByteArray function to your code and call it like this:

byte[] bytes = hexStringToByteArray(str);
Community
  • 1
  • 1
samgak
  • 23,944
  • 4
  • 60
  • 82