最近遇到了进制转换的问题,于是就在网上找这方面的资料。以前都是用的
Integer.parseInt() 等系列的方法,但是这些方法有个问题,那就是只能parse无符号的整数,
遇到有符号的怎么办呢,比如要parse 0x8000000001 就不行了。
一个巨 Easy 的办法就是
String s = String.valueOf(0x80000001);
int i = Integer.parseInt(s);
这样转换的就是有符号的整数了。
附:
/**
* 十进制转换为十六进制
* @param dec int
* @return String
*/
public static String dec2Hex(int dec) {
StringBuffer sb = new StringBuffer();
sb.append("0x");
for (int i = 0; i < 8; i++) {
int tmp = (dec >> (7 - i % 8) * 4) & 0x0f;
if (tmp < 10)
sb.append(tmp);
else
sb.append((char) ('A' + (tmp - 10)));
}
return sb.toString();
}
/**
* byte转换为十六进制
* @param b byte
* @return String
*/
public static String byte2Hex(byte b) {
return ("" + "0123456789ABCDEF".charAt(0xf & b >> 4) +
"0123456789ABCDEF".charAt(b & 0xf));
}