Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
2014-03-05 17:34
633 查看
#include <stdio.h> #include <stdlib.h> unsigned char a2x(const char c) { switch(c) { case '0'...'9': return (unsigned char)atoi(&c); case 'a'...'f': return 0xa + (c-'a'); case 'A'...'F': return 0xa + (c-'A'); default: goto error; } error: exit(0); } /*convert a string,which length is 18, to a macaddress data type.*/ #define MAC_LEN_IN_BYTE 6 #define COPY_STR2MAC(mac,str) \\ do { \\ for(int i = 0; i < MAC_LEN_IN_BYTE; i++) {\\ mac[i] = (a2x(str[i*3]) << 4) + a2x(str[i*3 + 1]);\\ }\\ } while(0) int main(int argc, char **argv) { unsigned char macaddr[8] = {0}; char macaddr_str[18] = "8e:b2:cf:89:00:4a"; COPY_STR2MAC(macaddr,macaddr_str); printf("0x%02x 0x%02x\\n",macaddr[0],macaddr[1]); return 0; }
相关文章推荐
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- [置顶] C语言,从字符串中提取一个字符串,int substr(char dst[], char src[],int start,int len)目标是:从src数组的起始位置开始向后偏移star
- c语言 char*类型作为中间变量将许多字符串保存到一个数组的问题
- 十六进制字符串 char数组 转换 c c++ java
- 十六进制字符串与char字节数组的转换函数
- 十六进制字符串 char 数组 转换 c/c++/java
- 十六进制字符串(CString或char[]) 和 BYTE,char数组 相互转化
- 十六进制字符串 char 数组 转换 c/c++/java
- C/C++如何把一个特定分隔符分割的字符串划分为一个字符串数组,strtok(char *,char*)分割函数
- c语言输入一个字符串,将其按照相反顺序存入同一个数组
- 十六进制字符串、char数组的转换: c c++ java
- 【c语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
- 将一个十六进制字符串转换为十进制数值的问题|| 以及C++中string转换成char*|| c++文件按行输入
- Linux下实现反转一个字符串或者数组中的数据
- C语言 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。
- 发现一个c语言中用字符数组和char型指针管理字符串一个很容易搞混的地方
- 十六进制字符串(CString或char[]) 和 BYTE,char数组 相互转化
- C语言:将输入的字符串(char* cp)存入字符指针数组(char * spa[])
- C语言中,利用宏定义一个字符串和字符数组定义的字符串其末尾都会自动添加\0字符