簡體   English   中英

如何將CHAR數組存儲到字符串MAC地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM