日期:2014-05-20  浏览次数:21069 次

16进制字符串怎样转成10进制
Integer.paresInt( "FBB4 ",16)   =   64436
我想实现FBB4转成-1100,即带着符号转换。
有什么好办法,请大家赐教!

------解决方案--------------------
64436-65536
------解决方案--------------------
某个负数10进制转成16进制,理论上应该是求它绝对值的补码,也就是先去掉十进制的负号,转成二进制,再取反加一。如果16转10进制,也是就倒过来了,先把16进制化成二进制,减一再取反,最后加上负号。

比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

那么,补码为:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。

本题方法:
FBB4---转二进制--1111 1011 1011 0100 ---减1---1111 1011 1011 0011
---取反---0000 0100 0100 1100---转为十进制---1100(十进制的)再加上负便可。

楼上的走了捷径。
按照楼上的思路
String s= "fbb4 ";(字符串s长度不要超过七位,否则numberformat异常)
System.out.println(Integer.parseInt(s,16)-Math.pow(2,4*s.length()));


如果有问题忘高手指点。。。

------解决方案--------------------
FBB4只有在单字节的情况下才等于-1100;
而我们输入的都是双字节的
所以应为FFFFFBB4 前面加4个FFFF