我已經提取了一個MAC地址到char*
數組中,使得數組的每一部分都是一對char值。在C中,如何將char *轉換爲十六進制
mac[0] = "a1"
mac[1] = "b2"
...
mac[5] = "f6"
基本上我需要採取的字符數組,並將它們轉換成無符號的字符,使得十六進制表示相同的原始char值。
a1 in ascii -> 0xa1
在C中將char *轉換爲十六進制的最佳方法是什麼?
我已經提取了一個MAC地址到char*
數組中,使得數組的每一部分都是一對char值。在C中,如何將char *轉換爲十六進制
mac[0] = "a1"
mac[1] = "b2"
...
mac[5] = "f6"
基本上我需要採取的字符數組,並將它們轉換成無符號的字符,使得十六進制表示相同的原始char值。
a1 in ascii -> 0xa1
在C中將char *轉換爲十六進制的最佳方法是什麼?
我的C不是最好的,但這個工程採用strtol(啓動,[停止],基地)
#include <stdlib.h>
#include <stdio.h>
int main(char ** argv, int argc) {
char * input = "a1";
printf("%d\n", (unsigned char)strtol(input, NULL, 16));
}
您可以使用sscanf的用於這一目的。
int mac_byte;
unsigned char byte;
sscanf(mac[0],"%x",&mac_byte);
byte = mac_byte & 0xFF;
#include <stdlib.h>
#include <stdio.h>
unsigned char mac_uchar[6];
for(i = 0;i < 6; ++i) {
mac_uchar = (unsigned char) strtol (&mac[n], (char **) NULL, 16);
}
我在回答慢...
這也是正確的答案。剛剛看到另一個。 – 2012-03-25 04:41:12
是的,他在我做之前提交... – forivall 2012-03-25 04:42:35
看到這個答案https://stackoverflow.com/a/46586095/5842403 – Joniale 2017-10-05 12:53:05