[英]Convert IP or MAC address from string to byte array (Arduino or C)
[英]How to convert Mac string to a Byte address in C
我想從命令行獲取MAC地址,所以我把它作為字符串...如何將這個17字節的MAC字符串轉換為“00:0d:3f:cd:02:5f”到C中的6字節MAC地址
在符合C99的實現中,這應該可行
unsigned char mac[6];
sscanf(macStr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
否則,你需要:
unsigned int iMac[6];
unsigned char mac[6];
int i;
sscanf(macStr, "%x:%x:%x:%x:%x:%x", &iMac[0], &iMac[1], &iMac[2], &iMac[3], &iMac[4], &iMac[5]);
for(i=0;i<6;i++)
mac[i] = (unsigned char)iMac[i];
沒有內置函數和錯誤處理簡單:
unsigned char mac[6];
for( uint idx = 0; idx < sizeof(mac)/sizeof(mac[0]); ++idx )
{
mac[idx] = hex_digit( mac_str[ 3 * idx ] ) << 4;
mac[idx] |= hex_digit( mac_str[ 1 + 3 * idx ] );
}
輸入實際上是3 * 6字節, \\0
。
unsigned char hex_digit( char ch )
{
if( ( '0' <= ch ) && ( ch <= '9' ) ) { ch -= '0'; }
else
{
if( ( 'a' <= ch ) && ( ch <= 'f' ) ) { ch += 10 - 'a'; }
else
{
if( ( 'A' <= ch ) && ( ch <= 'F' ) ) { ch += 10 - 'A'; }
else { ch = 16; }
}
}
return ch;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.