简体   繁体   English

在C中将一串mac地址转换为十六进制

[英]Converting a string of mac address into hex in C

I want to convert a string of mac address into hex format.我想将一串mac地址转换为十六进制格式。

  • Input:输入:
char remote_device_mac[] = "00a05056a810";
  • Expected output:预期 output:
uint8_t base_mac_addr[6] = {0x00,0xa0,0x50,0x56,0xa8,0x10};

My code:-我的代码:-

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};

size of dummy has at least 3 bytes (2 for value in hexa, 1 for \0 ). dummy的大小至少有 3 个字节(2 表示 hexa 值,1 表示\0 )。 So you can declare as:所以你可以声明为:

char dummy[3] = "00";

Use base = 16 instead of 10, because you want to convert to hexadecimal.使用 base = 16 而不是 10,因为您要转换为十六进制。

num = strtol(dummy, &ptr, 16);

sprintf is not necessary (use it if you want to copy number into a string). sprintf不是必需的(如果要将数字复制到字符串中,请使用它)。

// assign each base_mac_addr to num.
base_mac_addr[k] = num;

Finally, the code as below:最后,代码如下:

     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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM