Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
2013-04-18 12:31
387 查看
#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*类型作为中间变量将许多字符串保存到一个数组的问题
- 十六进制字符串(CString或char[]) 和 BYTE,char数组 相互转化
- C语言:将输入的字符串(char* cp)存入字符指针数组(char * spa[])
- linux下C语言中的字符数组与字符串
- C语言数字字符串转换为十六进制格式函数
- C语言中,利用宏定义一个字符串和字符数组定义的字符串其末尾都会自动添加\0字符
- 汉字字符串转换成十六进制byte数组,一个汉字存到两个byte里面,大整数存到两个byte里面
- C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列
- C语言 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- 把数组按指定的格式拼接成一个字符串
- 程序猿之---C语言细节1(==与=、函数指针、数组字符串printf、int ((b));、char b =‘abcd’)
- C语言 将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数 函数原型:double my_atof(char *str)
- C语言将多个字符串合并为一个字符串例如:数组[a,bbb,ccc]->字符串"a,bbb,ccc"
- 十六进制字符串与char字节数组的转换函数 II
- char[]->NSString;char[]->NSData;十六进制和普通字符串互转;NSString转为utf16格式char[]
- 【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- java基础面试笔试题之把数组中的数据按照指定个格式拼接成一个字符串