Java中十六进制转换 Integer.toHexString().doc

Java中十六进制转换 Integer.toHexString().doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java中十六进制转换 Integer.toHexString()

为了显示一个byte型的单字节十六进制(两位十六进制表示)的编码,请使用: Integer.toHexString((byteVar 0x000000FF) | 0xFFFFFF00).substring(6) ?byteVar 0x000000FF的作用是,如果byteVar 是负数,则会清除前面24个零,正的byte整型不受影响。(...) | 0xFFFFFF00的作用是,如果byteVar 是正数,则置前24位为一,这样toHexString输出一个小于等于15的byte整型的十六进制时,倒数第二位为零且不会被丢弃,这样可以通过substring方法进行截取最后两位即可。 ? Java代码?? import?junit.framework.TestCase;?? ?? public?class?Hex?extends?TestCase?{?? ?? ????public?void?testPositiveIntToHex()?{?? ????????//如果正数小于15时,只输入一位,而不是按我们想像的两位标准十六进制输出显示的,后面解决这个问题?? ????????System.out.println(Integer.toHexString(2));//2?? ????????System.out.println(Integer.toHexString(15));//f?? ????????System.out.println(Integer.toHexString(16));//10?? ????????System.out.println(Integer.valueOf(F,?16));//16?? ????}?? ?? ????/*? ?????*?Integer.valueOf()实质上调用的是Integer.parseInt()来完成的,所以? ?????*?Integer.parseInt()与Integer.valueOf()功能是一样的,只是返回值不? ?????*?一样而已? ?????*/?? ????public?void?testNegativeIntToHex()?{?? ????????//负整数时,前面输入了多余的?FF?,没有去掉前面多余的?FF,按并双字节形式输出?? ????????System.out.println(Integer.toHexString(-2).toUpperCase());//FFFFFFFE?? ?? ????????//实质上0xFF会像转换成0x000000FF后再进行位运算?? ????????System.out.println(Integer.toHexString(-2??0xFF).toUpperCase());//FE?? ????????System.out.println(Integer.toHexString(-2??0x000000FF).toUpperCase());//FE?? ?? ????????//注,FE输出时不会为-2,因为此时不会把FE看成负数,valueOf会把所有数字串看成正的?? ????????System.out.println(Integer.valueOf(FE,?16));//254?? ????????//如果要输出-2,只能按以下形式输出?? ????????System.out.println(Integer.valueOf(-2,?16));//-2?? ?? ????????//所以要把?FE?看成负的话,只能在前面加上负号,但是这里输出还不是-2,?? ????????//而是先计算Integer.valueOf(FE,?16),再在结果前加上负?? ????????System.out.println(Integer.valueOf(-FE,?16));//-254?? ?? ????????/*?所以如果要输入某个负数,我们只能先求出该数的绝对值的原码十六进制,再在前面加上负号,? ?????????*?例如求表示-128,则先对绝对值128求十六进制?80,再在前面加上负号?-80? ?????????*/?? ????????System.out.println(Integer.valueOf(-80,?16));//-128?? ?? ????????/*?为什么说valueOf把所有数字串看成正的呢?请看下面三行代码,因为最大正数为2147483647,? ?????????*?如果再??在7fffffff基础上加上一个一,运行肯定会出错误(这与直接输出0一样),? ?????????*?那么就可以证明? ?????????*/?? ????????Sy

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档