
ISO 14443 B型CRC计算
SRIX4K
附录A
ISO 14443 B型CRC计算
& #包括LT ; stdio.h中& GT ;
& #包括LT ;文件stdlib.h & GT ;
#包括<string.h>
#包括<ctype.h>
#定义字节无符号字符型
#定义USHORT无符号短
无符号短UpdateCrc ( BYTE通道, USHORT * lpwCrc )
{
CH = ( CH ^ ( BYTE ) ( ( * lpwCrc ) & 0x00FF ) ) ;
沟道= (声道^( ch<<4 ));
* lpwCrc = ( * lpwCrc >> 8 ) ^ ( ( USHORT ) CH <<
8)^((USHORT)ch<<3)^((USHORT)ch>>4);
返回( * lpwCrc ) ;
}
无效ComputeCrc (字符*数据,长整型,BYTE * TransmitFirst , BYTE
* TransmitSecond )
{
BYTE chBlock ; USHORTt wCrc ;
wCrc = 0xFFFF的; // ISO 3309
do
{
chBlock = *数据++;
UpdateCrc ( chBlock , &wCrc ) ;
}而( --length ) ;
wCrc = wCrc ; // ISO 3309
* TransmitFirst = ( BYTE ) ( wCrc &为0xFF ) ;
* TransmitSecond = ( BYTE ) ( ( wCrc >> 8 ) &为0xFF ) ;
返回;
}
INT主要(无效)
{
BYTE BuffCRC_B [ 10 ] = { 0x0A的, 12H处, 0x34 , 0x56 } ,第一,第二,我;
的printf ( "Crc -16 G( X ) = X ^ 16 + X ^ 12 + X ^ 5 + 1“);
的printf (的[ " "CRC_B ) ;
对于( i = 0 ; i<4 ;我+ + )
的printf ( " % 02X " , BuffCRC_B [ I] ) ;
ComputeCrc ( BuffCRC_B ,4, &First , &Second ) ;
的printf ( " ]传输: % 02X然后% 02X “ ,第一,二);
return(0);
46/50