package com.andylau.sunday;
import java.util.ArrayList;
public class four {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(HexToOx(60));
}
/*
* 需求:将十进制数转换成16进制数的表现形式 步骤: 1.先取出十进制数的二进制表示中的最后四位(将其与15进行与操作就能完成)
* 然后再将与之后的结果和9进行比较,如果是9之内的数那么就用数字表示,如果是大于9的话
* 那么就应该要转换成字母的表示形式:(char)(num&15-10+\'A\')
* 2.然后再将其向右移四位,然后与15进行与操作,也和步骤1中的一样,进行结果的判断 3.重复上面的操作,知道右移之后的结果为0位置
* 4.那么结果就是从下面开始将结果串联起来。
*/
static String HexToOx(int num) {
int tmp;// 定义一个中间变量用于保存临时数据用的
// 数组是用来保存每一次进行与之后的结果用的也是为最后串联成结果用的
ArrayList<String> list = new ArrayList<String>();
String tmpStr="";
while (num > 0) {// 这个是结束与操作的条件,不能无休止地操作下去
tmp = num & 15;
if (tmp > 9) {
list.add(String.valueOf((char) (tmp - 10 + \'A\')));
} else {
list.add(String.valueOf(tmp));
}
// 操作完之后就应该要将其进行右移4位操作
num = num >>> 4;// 记住是不带符号右移的,因为如果带符号的话碰到负数的情况那么就会一直进行循环下去(如果是转换成8进制就右移3位,二进制就右移1位)
}
// 接下来就是拼接字符串(记住要倒着遍历)
for (int i = list.size() - 1; i >= 0; i--) {
tmpStr += list.get(i);
}
return tmpStr;
}
}