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