在C中,如何将char*转换为十六进制

Nic*_*dlo 2 c hex char

我已经将MAC地址提取到char*数组中,使得数组的每个部分都是一对char值.

mac[0] = "a1"
mac[1] = "b2"
...
mac[5] = "f6"
Run Code Online (Sandbox Code Playgroud)

基本上我需要取char数组并将它们转换为unsigned char,这样十六进制表示与原始char值相同.

a1 in ascii -> 0xa1
Run Code Online (Sandbox Code Playgroud)

在C中将char*转换为十六进制的最佳方法是什么?

Ada*_*dam 8

我的C不是最好的,但这可以使用strtol(start,[stop],base)

#include <stdlib.h>
#include <stdio.h>

int main(char ** argv, int argc) {
  char * input = "a1";
  printf("%d\n", (unsigned char)strtol(input, NULL, 16));
}
Run Code Online (Sandbox Code Playgroud)