import java.util.HashMap;
import java.util.Map;
/**
* Main_17_Decimal_Conversion
* 十进制转为十六进制
* 十进制转为八进制
*/
public class Main_17_Decimal_Conversion {
public static void main(String[] args)
{
int a = 147;
System.out.println(convert_to_octal(a));
System.out.println(convert_to_hexadecimal(a));
}
//转为八进制
public static int convert_to_octal(int value)
{
StringBuffer sb = new StringBuffer();
int remainder;//余数
while(value != 0)
{
remainder = value % 8;
sb.append(remainder);
value /= 8;
}
String resultStr = sb.reverse().toString();
//转为整型
return Integer.parseInt(resultStr);
}
public static String convert_to_hexadecimal(int value)
{
StringBuffer sb = new StringBuffer();
Map<Integer,String> hashmap = new HashMap<>();
String[] str = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
for(int i=0; i<str.length; i++)
{
hashmap.put(i, str[i]);
}
while(value != 0)
{
int remainder = value % 16;
sb.append(hashmap.get(remainder));
value /= 16;
}
String resultStr = sb.reverse().toString();
return resultStr;
}
}
其中16进制的 A--F,第一想法是用hashmap的方法,10代表A,11代表B.......15代表F。
想到用hashmap键值对的方法 ;后来发现用数组的索引值,也能很好的表示键值对。数组索引 i = 10,其数组值为A。
public static String convert_to_hexadecimal(int value)
{
StringBuffer sb = new StringBuffer();
String[] str = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
while(value != 0)
{
int remainder = value % 16;//商,也代表数组的索引
sb.append(str[remainder]);//数组的索引代表对应的字母
value /= 16;
}
String resultStr = sb.reverse().toString();
return resultStr;
}