[英]How to store CHAR array to string MAC ADDRESS
我有一個返回unsigned char chMAC[6];
的函數unsigned char chMAC[6];
這是mac地址,我將其打印為
printf("Mac: %x",chMAC[0]);
printf("%x",chMAC[1]);
printf("%x",chMAC[2]);
printf("%x",chMAC[3]);
printf("%x",chMAC[4]);
printf("%x\n",chMAC[5]);
我得到的輸出為Mac: B827E82D398E
,這是實際的mac地址,但現在我需要將該值作為字符串傳遞給sql參數,但我不知道如何,因為我需要在兩者之間添加:
。 例如Mac: B8:27:E8:2D:39:8E
我敢打賭這很容易,但我仍在學習C。
您已經有了所有片段,只需要將它們按正確的順序排列即可。 與其使用6個單獨的printf()語句,不如將其與所有格式一起放入一條語句中:
printf("Mac: %02X:%02X:%02X:%02X:%02X:%02X\n",
chMAC[0], chMAC[1], chMAC[2], chMAC[3], chMAC[4], chMAC[5]);
如果值<15,則“%02X”格式語句中的“ 02”將前導零。 大寫字母X會將字母的十六進制數字變成大寫字母(這是傳遞MAC地址時的慣用慣例)。
要將結果字符串發送到緩沖區而不是stdout,請使用相同的格式字符串調用sprintf(甚至更好的是snprintf)。
char mac_str[24];
snprintf(mac_str, sizeof(mac_str), "Mac: %02X:%02X:%02X:%02X:%02X:%02X\n",
chMAC[0], chMAC[1], chMAC[2], chMAC[3], chMAC[4], chMAC[5]);
您可能希望所有字節都顯示為兩個字符:
%2x
但前導0而不是空格:
%02x
您可以在一個printf
調用中將它們全部串在一起
printf("Mac: %02X:%02X:%02X:%02X:%02X:%02X\n"
, chMAC[0], chMAC[1], chMAC[2], chMAC[3], chMAC[4], chMAC[5]);
如果要讓文本轉到sting緩沖區而不是stdout
請執行以下操作:
char buffer[32];
snprintf(buffer, sizeof(buffer)
, "Mac: %02X:%02X:%02X:%02X:%02X:%02X\n"
, chMAC[0], chMAC[1], chMAC[2], chMAC[3], chMAC[4], chMAC[5]);
為什么所有單獨的電話?
newlength = sprintf(mac, '%x:%x:%x:%x:%x:%x\n', chMAC[1], etc....)
您可以在一個printf / sprintf調用中包含多個%whatever
格式的字符...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.