请用移位的方式打印出一个十进制整数的十六进制形式.
提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一(作为作业,要求每种方式都用到)计算出一个十六进制数值对应的十六进制形式: (1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A'
(2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
(3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一(作为作业,要求每种方式都用到)计算出一个十六进制数值对应的十六进制形式: (1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A'
(2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
(3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
解决方案 »
- 父类 子类问题?
- 有一道关于利用 Socket 套接字进行面向连接通信的编程问题求解
- 怎么自动将U盘内容拷贝到本地磁盘
- ** 求一个java链式基数排序的代码 **
- HashMap 问题
- 请问PrintWriter的flush()方法有何作用?为何每次使用完PrintWriter的println()之后都用一下flush()呢?
- 100分 的JAVA 初级问题!!!!!
- 求救...甚樣存入一些文字和甚樣取出txt file 的文字,請幫幫忙...thanks
- 各位,我想学一些java数据库方面的编程,不知要安装配置什么。
- 敲门者提问:QueryDataSet组件的几个问题。
- 怎么区分方法是继承来的还是实现的接口中的方法
- Collection接口和List接口问题
public class Test{
public static String integerToHex(int x){
char[] hex={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
StringBuilder sb=new StringBuilder();
for(int i=0;i<8;i++){
sb.append(hex[x&0xf]);
x>>=4;
}
return sb.reverse().toString();
}
public static void main(String[] args){
System.out.println(integerToHex(255));
}
}
另外,0(零)打头的是8进制,比如017,表示8进制的17
int number = 6789;
System.out.println(Integer.toHexString(number));//用于检验下列方法的正确性
System.out.println(toHexString(number,TYPE_1));
System.out.println(toHexString(number,TYPE_2));
System.out.println(toHexString(number,TYPE_3));
}
public static final int TYPE_1 = 1;
public static final int TYPE_2 = 2;
public static final int TYPE_3 = 3;
private static String toHexString(int number, int type) {
int mask = 0x0000000F;
char buff [] = new char[8];
for(int i=0;i<8;i++){
int hex = (number>>>(i*4))&mask;//无符号右移
switch(type){
case TYPE_1:
buff[8-i-1]=convertHex_1(hex);
break;
case TYPE_2:
buff[8-i-1]=convertHex_2(hex);
break;
case TYPE_3:
buff[8-i-1]=convertHex_3(hex);
break;
}
}
return new String(buff);
} private static char convertHex_1(int hex) {
if(hex>=10)return (char)(hex-10+'A');
return (char)(hex+'0');
} public static final char HEX_CHARs []=new char[]{
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
};
private static char convertHex_2(int hex) {
return HEX_CHARs[hex];
} private static char convertHex_3(int hex) {
return Character.forDigit(hex,16);
}
private final static char[] HEX = "0123456789abcdef".toCharArray();
public static void main(String[] args) {
int num = 1234567;
System.out.println(toHex(num));
System.out.println(Integer.toHexString(num));
}
public static String toHex(int num) {
if (num == 0) {
return "0";
}
char[] chs = new char[Integer.SIZE / 4];
int offset = chs.length;
while (num != 0) {
chs[--offset] = HEX[num & 0xf];
num >>>= 4;
}
return new String(chs, offset, chs.length - offset);
}
}