27,511
社区成员




void
hextodec( unsigned char *hex, unsigned char *dec, unsigned char length, unsigned char displength )
{
unsigned char xdata temp[ 23 ];
unsigned char xdata j, k;
unsigned char xdata this4;
char xdata i, t;
memset( temp, 0, 22 );
for( i = length - 1; i >= 0; i-- )
for( j = 0; j < 2; j++ )
{
this4 = *( hex + i ) >> ( ( 1 -j ) * 4 ) & 0x0f;
//得到一个4位的数
for( k = 0; k < 22; k++ )
temp[ k ] *= 16; //扩大16倍
for( k = 0; k < 22; k++ )
{ //进位
temp[ k + 1 ] += temp[ k ] / 10;
temp[ k ] -= temp[ k ] / 10 * 10;
}
temp[ 0 ] += this4;
for( k = 0; k < 22; k++ )
{ //进位
temp[ k + 1 ] += temp[ k ] / 10;
temp[ k ] -= temp[ k ] / 10 * 10;
}
}
//搞定了
memset( dec, 0, displength + 1 );
for( t = displength; t >= 0; t-- )
*( dec + displength - t - 1 ) = temp[ t ] + 48;
i = 0;
while( *( dec + i ) == '0' && ( i < displength - 1 ) )
{
*( dec + i ) = ' ';
i++;
}
}