请用移位的方式打印出一个十进制整数的十六进制形式。提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一(作为作业,要求每种方式都用到)计算出一个十六进制数值对应的十六进制形式: (1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A'
(2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
(3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
(2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
(3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
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();
}
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;//这里的i没有有必要%8吗?
if (tmp < 10) sb.append(tmp);
else sb.append((char) ('A' + (tmp - 10)));
}
return sb.toString();
}
顺便说下...还是要的说
java_net 200的网页里也有
char[] hex = {'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
StringBuffer sb = new StringBuffer();
sb.append("0x"); for (int i = 28; i >= 0; i-=4) {
sb.append(hex[(dec >> i) & 0x0f]);
}
return sb.toString();
}