需求:将BYTE[6]的BCD码前3个字节正序,后3个字节逆序。
如:0x 12 34 56 78 90 12 转换成后3个字节逆序的字符串 “123456870921”
typedef BYTE A[6];
A baNum = {0x12, 0x34, 0x56, 0x78, 0x90, 0x12};
char pStr[20] = {0};
for (i = 0; i < 6 * 2; i++)
{
/*正序-前3个字节-转字符串*/
if (i < 6)
{
pStr[i] = ((baNum[i >> 1] >> ((!(i & 1)) << 2)) & 0xf) + '0';
}
/*逆序-后3个字节-转字符串*/
if (i >= 6)
{
pStr[i + 1] = ((baNum[i >> 1] >> ((i & 1) << 2)) & 0xf) + '0';
}
if (pStr[i] > '9')
{
pStr[i] = '0';
}
}