|
这行代码主要做了两件事情:
str[n++]
。现在,我会详细解释每个部分:
a.?dat[i] >> 4:这部分是位运算中的右移操作。dat[i]
?是一个整数,其值被右移了4位。例如,如果?dat[i]
?的值为?0x1234
,那么右移4位后变为?0x1200
。
b.?& 0xF:这部分是位运算中的与操作。0xF
?是十六进制数,其二进制表示是?00001111
。这个操作将?dat[i] >> 4
?的结果与?00001111
?进行与操作,保留最后4位,其他位清零。例如,如果?dat[i] >> 4
?的结果是?0x1200
,那么与操作后得到的结果是?0x0000
。
3.?str[n++]:这是一个数组的元素,并且使用后自增的方式赋值。这意味着?n
?的值会增加1,指向数组的下一个位置。
总结一下,这行代码的目的是从?dat[i]
?中提取高4位的信息,然后在 "0123456789ABCDEF" 中找到对应的字符,最后将这个字符赋值给?str[n++]
。
应用,(数据转换成16进制字符串)
void datToHexStr(uint8_t *dat,uint8_t*str ,uint16_t datLen)
{
if(datLen==0)return;
for(uint16_t i=0,n=0;i<datLen;i++)
{
str[n++]="0123456789ABCDEF" [(dat[i]>>4)&0xF];
str[n++]="0123456789ABCDEF" [(dat[i]>>0)&0xF];
}
}