用printf打印MAC地址的时候为什么要后面的&0xFF?
来源:互联网 发布:最讨厌的动漫人物知乎 编辑:程序博客网 时间:2024/06/05 03:34
悬赏分:10 | 解决时间:2011-4-25 22:03 | 提问者:尤孟
MAC[i]是MAC地址的一个字节,如果去掉后面的&0xFF则会打印出00:50:56:ffffffeb:0e:ffffff86:(正确:00:50:56:eb:0e:86:),请问后面0xFF的作用是什么?
最佳答案
MAC[i]应该是被定义成了char了,char是有符号的,完整的类型名是signed char
若是printf("%.2X:",MAC[i])
传参时会将MAC[i]扩展成int再传,若MAC[i]是0x50, 则被扩展成0x00000050,
若是0x86, 因为符号位是1,带符号扩展则变成0xFFFFFF86
所以要&0xff, 去掉高位0xFFFFFF
还有更好的办法是把MAC数组定义成unsigned char数组,则不需要&0xFF
- 用printf打印MAC地址的时候为什么要后面的&0xFF?
- printf的时候打印%号
- java中byte转int时候为什么要&0xff
- byte 为什么要 & 0xff?
- 为什么需要用&0xFF
- 关于为什么要用 if cv2.waitKey(1) & 0xFF == ord('q'): break的解释
- & 0xFF 的作用
- &0xFF 的意义
- &0xff的原因
- &0xff的作用
- java的md5算法中为什么要将每个字节都&0xff?
- java的md5算法中,为什么要将每个字节都&0xff?
- 0xff打印
- byte为什么要与上0xff?
- Md5加密中为什么要 & 0xff
- printf 的打印格式
- printf的打印格式
- 关于&0xFF的理解
- json infinite recursion stackoverflowerror
- 有关URL传值乱码问题
- CUSparse 第二章 使用CUSPARSE API
- 1.从eclipse中带格式复制代码
- Python * 与 ** 修饰符解析
- 用printf打印MAC地址的时候为什么要后面的&0xFF?
- Java基础——static关键字
- VBS基础知识
- Hibernate创始人Gavin King:冬眠的数据
- 回调函数的概念及其使用
- 计算机基础核心概念的实现简介
- C++ GetTickCount()和Sleep()
- VC Edit控件自动换行显示方法
- IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS