char dummy[2] = {0};
размер dummy
имеет не менее 3 байтов (2 для значения в гекса, 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;
}