C语言,传入一串字符串mac地址,解析并赋值给一个char数组
时间: 2024-10-11 09:12:53 浏览: 105
在C语言中,处理MAC地址(通常由6组冒号分隔的16进制数字组成)需要先将输入的字符串转换成实际的二进制数据存储到`char`数组中。这里是一个简单的示例,假设我们有一个函数`parseMacAddress`来进行这个任务:
```c
#include <stdio.h>
#include <string.h>
// 宏定义表示每个字节的长度
#define MAC_BYTE_LEN 2
void parseMacAddress(char macString[], char macArray[]) {
int index = 0;
for (int i = 0; i < strlen(macString); i += MAC_BYTE_LEN) {
// 获取两个十六进制字符并转换成十进制整数
unsigned char byte = (unsigned char)(macString[i] - '0');
if (i + 1 < strlen(macString)) {
byte = byte * 16 + (macString[i + 1] - '0');
}
// 将字节转换为二进制并存入数组
memmove(&macArray[index], &byte, sizeof(byte));
index += MAC_BYTE_LEN;
}
}
int main() {
char macString[] = "00:11:22:33:44:55";
char macArray[18]; // 包含冒号,共17字节,加1用于结束符'\0'
parseMacAddress(macString, macArray);
// 输出处理后的MAC地址数组,注意此处省略了'\0'终止符
printf("Parsed MAC Address: ");
for (int i = 0; i < index; i++) {
printf("%02x:", macArray[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,我们遍历字符串中的每个两字符部分,将其转换为16进制对应的十进制数值,并将这个字节转换为二进制形式存储在`macArray`中。最后,记得在打印结果时加上每个字节间的冒号。
阅读全文
相关推荐


















