#include <sys/types.h>
#include <netinet/in.h>
#include <stdio.h>
/*
* Check whether "cp" is a valid ascii representation
* of an MAC address and convert to a binary address.
* Returns 1 if the address is valid, 0 if not.
*/
int inet_mton(const char *cp, u_char *ap)
{
int colons = 0;
quad_t acc = 0, addr = 0;
do {
register char cc = *cp;
switch (cc) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
acc = acc * 16 + (cc - '0');
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
acc = acc * 16 + (cc - 'a' + 10);
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
acc = acc * 16 + (cc - 'A' + 10);
break;
case ':':
if (++colons > 5) {
return 0;
}
/* Fall down to case '\0' */
case '\0':
if (acc > 0xFF) {
return 0;
}
addr = addr << 8 | acc;
acc = 0;
break;
default:
return 0;
}
} while (*cp++) ;
/* Normalize the address */
if (colons < 5) {
addr <<= 8 * (5 - colons) ;
}
/* Store it if requested */
if (ap) {
/* Convert address to network bytes order(big-endian) */
#if __BYTE_ORDER == __LITTLE_ENDIAN
int i = 0, j = 0;
for(i=0,j=5; i<6,j>=0; i++,j--){
ap[i] = ((u_char *) &addr)[j];
}
#elif __BYTE_ORDER == __BIG_ENDIAN
ap = (u_char *) &addr;
#endif
}
return 1;
}
int main()
{ /* test inet_mton(const char *cp, u_char *ap) */
char *macaddr = "00:06:1B:D1:73:1F";
u_char m_addr[6];
printf("%s\n", macaddr);
if(inet_mton(macaddr, m_addr)){
int i = 0;
for(i=0; i<6; i++){
printf("%2x:", m_addr[i]);
}
}
return 0;
}
分享到:
相关推荐
子程序 Hex2Bin, 字节集, 公开, 十六进制文本到字节集 .参数 原文, 文本型 .子程序 Hex2Bin1, 文本型, 公开, 文本型->文本型 .参数 Hex, 文本型 .子程序 Hex2Dec, 整数型, 公开, 十六到十 .参数 十六进制转换数据,...
5、公开子程序(字节集_到文本|字节集_到整数|字节集_取左边|字节集_取右边|字节集_取空白|字节集_取长度|字节集_取中间|字节集_替换|字节集_寻找|字节集_取指针)模块原有命令。 6、修正“文本_取中间_批量”当参数...
getMacAddress : 获取设备 MAC 地址 getManufacturer : 获取设备厂商 getModel : 获取设备型号 shutdown : 关机 reboot : 重启 reboot2Recovery : 重启到 recovery reboot2Bootloader: 重启到 bootloader 判空相关 -...
要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。 范例 下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F: 下例将在硬盘上添加一个 20 MB 的分区: ...
Note: Note: Note: Note: If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In particular, note that some ...
arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息 start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令 mem 查看cpu...
2.Api_Win32_Mac类工具包 一个Win32的Api包,实现了大部分的Api操作帮助方法 3.在c#程序中放音乐的帮助类 使用C#播放音乐的帮助类,只需要调用方法就可以放音乐了 GDI+相关,图像相关 1.生成缩略图的类文件Small...
13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET...
13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET...
13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET...
8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. mysqladmin:用于管理MySQL服务器的客户端 8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. ...
目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 ...13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET ...
13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET...
8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. mysqladmin:用于管理MySQL服务器的客户端 8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysql...
13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET...
怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. mysqladmin:用于管理MySQL服务器的客户端 8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 ...