A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王立浩 中级黑马   /  2013-1-18 15:47  /  1419 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

打印byte类型的16进制表示的时候

若是使用java的权限自动提升,若byte是正数还好,若是负数,因为是补码存储的而自动提升时高位补位方式类似于算数右移
也就是说会考虑符号位,此时高24位全部为1
例如byte a=0xff;
调用函数Integer.toHexString(a)时
此时转换出来的值为0xffffffff,显然打印出来的结果不对
而采用&0xff的做法,清零高24位
Integer.toHexString(a & 0xff),此时结果就对了



-------------------------------------------------------------------------
偶然看到---分享一下

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
值得学习~  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马