[英]Converting a string of mac address into hex in C
我想將一串mac地址轉換為十六進制格式。
char remote_device_mac[] = "00a05056a810";
uint8_t base_mac_addr[6] = {0x00,0xa0,0x50,0x56,0xa8,0x10};
我的代碼:-
char dummy[2] = {0};
int j = 0;
uint8_t num = 0;
for(int k=0;k<6;k++)
{
for(int i=0;i<2;i++)
dummy[i] = remote_device_mac[i+j];
num = (int)strtol(dummy, NULL, 8);
j=j+2;
sprintf(base_mac_addr[k], "%x", num);
num = 0;
memset(dummy,0,2);
}
char dummy[2] = {0};
dummy
的大小至少有 3 個字節(2 表示 hexa 值,1 表示\0
)。 所以你可以聲明為:
char dummy[3] = "00";
使用 base = 16 而不是 10,因為您要轉換為十六進制。
num = strtol(dummy, &ptr, 16);
sprintf
不是必需的(如果要將數字復制到字符串中,請使用它)。
// assign each base_mac_addr to num.
base_mac_addr[k] = num;
最后,代碼如下:
for(int k=0;k<6;k++)
{
for(int i=0;i<2;i++)
dummy[i] = remote_device_mac[i+j];
num = strtol(dummy, &ptr, 16);
j=j+2;
printf("0x%2x\n", num);
base_mac_addr[k] = num;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.