Witam.
Mam pytanie potrzebuje obliczyć CRC dla mojej paczki danych.
W tym celu znalazłem sobie kilka kodów między innymi ten :

CRC16:

 unsigned short TForm1::ModbusCRC(unsigned char buf)
{ 
   unsigned short crc = 0xffff;      
   int i; 
   

      crc ^= buf; 
    
      for(i=0; i<8; i++)    
       {               
         if(crc & 1) 
         { 
            crc >>= 1; 
            crc ^= 0xA001; 
         } 
         else 
         { 
            crc >>= 1; 
         } 
      }

   return crc;        
}


..............
 unsigned short CRC;

CRC=ModbusCRC(123);// daje 25599 czyli HEX:0x63; 0xFF;

chciałem to sprawdzić choćby tu http://www.lammertbies.nl/comm/info/crc-calculation.html?crc=ff0510&m...
ale tam wychodzi zupełnie co innego. Wyniki zgadzają się tylko jeśli obliczam CRC dla cyfr od 1 do 9 np. CRC=ModbusCRC(1);
Próbowałem też innych algorytmów ale za każdym razem jest podobnie co jest tego przyczyną?
Pozdrawiam.