首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 
设为首页
加入收藏
联系我们
热门关键字: .net应用  操作系统  Dreamweaver  WinRAR  网络推广
高级搜索
您当前的位置: 主页>网络技术>网络知识>用sscanf格式化MAC地址实例一则
用sscanf格式化MAC地址实例一则
来源: 发布时间:2008-04-08 发布人: 浏览: 人次   字体: [ ]  
今天要从配置文件中读MAC地址,习惯上写成
sscanf (buf, "%02X:02X:02X:02X:02X:02X",
        &mac[0],
        &mac[1],
        &mac[2],
        &mac[3],
        &mac[4],
        &mac[5]
    );


因为看代码中,printf的时候都是这样的格式。
在我的机器上写了测试程序测试成功,谁知等我交叉编译到PowerPC平台下,
这段代码就不好使了,还让我迷茫了半天。后来推敲是因为X86与Power移植的问题,
再深入想到是BIG_ENDIAN与LITTLE_ENDIAN的问题,
根本原因还是格式串使用不正确。
我要取字符串中的两个字符并且把它们当作8位的HEX值,送给mac[i],
我的格式字符串使用的是打印MAC地址通用的格式串,反过来给sscanf用就不对了,
格式串中的格式%02X,仅表示把源串中的两个字符当作一个
16进制整数
并不是说当作一个8位的16进制整数
结果就是程序从源串中解析出6个16进制数,并且分别赋值给&mac[i],
当然,在X86的机器上,整数的最低位恰好放在指定的mac[i]中,高位则覆盖其后的mac[i+1],...的内容,
所以在我的X86机器上运行程序是正确的,但是到了PowerPC上,
地址的低位放的是整数的高位内容,所以mac[]数组被清0。

我真正需要的格式串,其实是要指定后面指针类型的,被称为type modifier characters的东东

查看手册,hh正是我想要的东西,最后的格式串改成

"%hhX:hhX:hhX:hhX:hhX:hhX"

一切OK了


↓下一篇:没有了
相 关 文 章   发布商链接
·TCP/IP协议之特殊的IP地址介绍
·TFTP之简单文件传送协议
·FTP使用精萃--FTP的内部命令
·子网划分方法及掩码简便算法
·ftp命令大全及应用实例
·linux系统下的DDNS配置方法
·关于面向3G的光传送网络技术介绍
·详解ADSL宽带上网常见故障及解决方法
·nslookup命令详解及其使用实例
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·nslookup命令详解及其使用实...
·详解ADSL宽带上网常见故障及...
·关于面向3G的光传送网络技术...
·linux系统下的DDNS配置方法
·ftp命令大全及应用实例
热 门 文 章
·nslookup命令详解及其使用实...
·详解ADSL宽带上网常见故障及...
·linux系统下的DDNS配置方法
·关于面向3G的光传送网络技术...
·子网划分方法及掩码简便算法
·ftp命令大全及应用实例
·TFTP之简单文件传送协议
·TCP/IP协议之特殊的IP地址介...
·FTP使用精萃--FTP的内部命令<...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .