9e9+
February 11th, 2005, 10:08 PM
need a sample code for 8 bit crc byte?. ..ccitt or others.
|
Click to See Complete Forum and Search --> : checksum gurus... 9e9+ February 11th, 2005, 10:08 PM need a sample code for 8 bit crc byte?. ..ccitt or others. Ejaz February 12th, 2005, 12:14 AM //------------------------------------------------------------------------------ static uint16 s_uiCRCTable[256]= { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 }; //------------------------------------------------------------------------------ uint16 CalcCRC( const void *pData, const uint32 uSize, uint16 uiCRC /*=0*/ ) { uint8 bTemp; char* pbData = (char *)pData; for (uint32 i = 0; i < uSize; ++i) { bTemp = (uint8)(uiCRC >> 8) ^ *pbData++; uiCRC = (uint16)( (uiCRC << 8) ^ s_uiCRCTable[ bTemp ] ); } return uiCRC; } 9e9+ February 12th, 2005, 03:43 PM if i am sending "123456789" (let's say 9 bytes), how can i use the above routine within a main progam to append the crc byte to my 9 bytes to make it 10 bytes?.i am a bit confused.someting like : uint16 crc; CalcCRC("123456789",9,crc); // ????? Not sure Ejaz February 12th, 2005, 11:38 PM Well, I use it to calculate the crc of data buffer (say "123456789") , then put the crc in the message header (sperate from the data buffer), send the message, get the message at the other end, read the header, calculate the crc of the data buffer and compare the two crc values. Something like struct WI_NetMsg { struct SHdr { uint32 uMsgID; uint16 uCRC; } SHdr_t; char * pData; } 9e9+ February 13th, 2005, 12:50 AM BTW, isn't this a 16 bit crc rather than an 8 bit?. Ejaz February 13th, 2005, 12:55 AM Infact it is. :blush: 9e9+ February 13th, 2005, 12:56 AM in fact it is 16 bit or 8 bit?. Ejaz February 13th, 2005, 12:58 AM It generates a 16-bit checksum. 9e9+ February 13th, 2005, 01:07 AM if you don't mind, do you have example of 8-bit crc?. Ejaz February 13th, 2005, 01:21 AM Well, I don't have exact example of 8-bit check sum, but a quick search at google has given some links, I don't know how much useful they can be. Have a look at the followings. A Checksum Algorithm (http://www.codeproject.com/cpp/checksum.asp#xxxx) CrcGen - CRC Code Generator (http://sewelldirect.com/CrcGen.asp) codeguru.com
Copyright Internet.com Inc., All Rights Reserved. |