c编程将一个十六进制数转换为字符

c编程将一个十六进制数转换为字符,c,hex,arp,C,Hex,Arp,我有 它保存%02x格式的值。例如,要在src_mac[0]中查找该值,我需要: unsigned char src_mac[6]; 我想知道如何将值放入src_mac(我需要将一个保存为字符串的mac地址放入src_mac,然后将mac地址放入以太arp结构中。编辑我的答案…我误读了它 无论如何,用hhx作为参数尝试此sscanf。这意味着它将读取十六进制值并将其存储为字符(不太可能是将值存储为int的默认值) scanf是你要找的。我不会从键盘上读取mac OK,sscanf如果它

我有

它保存%02x格式的值。例如,要在src_mac[0]中查找该值,我需要:

    unsigned char src_mac[6];

我想知道如何将值放入src_mac(我需要将一个保存为字符串的mac地址放入src_mac,然后将mac地址放入以太arp结构中。

编辑我的答案…我误读了它

无论如何,用
hhx
作为参数尝试此
sscanf
。这意味着它将读取十六进制值并将其存储为字符(不太可能是将值存储为int的默认值)


scanf
是你要找的。我不会从键盘上读取mac OK,
sscanf
如果它是字符串而不是stdin。嗨。我知道如何memcpy,我只是不知道如何填充用于memcpy的无符号字符数组(src_mac)我得到警告格式“%x”要求参数类型为int,但参数类型为“unsigned char*”@Emil完全正确…我更新了答案,使scanf读取十六进制,并将其放入uint8\u t非常感谢你Davide!
    printf("%02x\n",src_mac[0]);
sscanf(string_mac, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &src_mac[5], &src_mac[4], &src_mac[3], 
                                                    &src_mac[2], &src_mac[1], &src_mac[0]);