- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)