问题描述
void set_binuid(uint8_t byte,uint8_t i) {
binuid[(i*4)] = (byte >> 3) & 0x01;
binuid[(i*4)+1] = (byte >> 2) & 0x01;
binuid[(i*4)+2] = (byte >> 1) & 0x01;
binuid[(i*4)+3] = (byte >> 0) & 0x01;
}
void hex_to_bin(void) {
uint8_t i;
for(i = 0; i < 8; i++) {
if (wieganduid[i] >= '0' && wieganduid[i] <= '9') {
/* Numerical representation */
set_binuid(wieganduid[i] - '0',i);
} else {
/* Number represented by a letter */
switch(wieganduid[i]) {
case 'A':
set_binuid(0x0A,i);
break;
case 'B':
set_binuid(0x0B,i);
break;
case 'C':
set_binuid(0x0C,i);
break;
case 'D':
set_binuid(0x0D,i);
break;
case 'E':
set_binuid(0x0E,i);
break;
case 'F':
set_binuid(0x0F,i);
break;
}
}
}
}
我正在将这些值传递给函数以使它们成为二进制数组,只要uint8_t
仅包含一个十六进制数,它就可以正常工作,或者当ascii表中的值与{{ 1}},但是当我得到已经提到的EF的值-转换为ascii 1-f
时,i
显然没有用,所以我需要拿起EF并将其移至另一个{{1 }}具有不同的十六进制值(在ascii中为i
,该函数才能正常工作,并为我提供uint8_t
的二进制EF
字节和4
的{{1}}字节
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)