在不更改C值的情况下将十六进制转换为char类型

问题描述

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...