之前的文章《Java數組-數組的應用 十進制整數轉化為16進制 》程式轉化出來的16進制,輸出的結構為倒序,還需要多程式進行修改
class TenToHex
{
public static void main(String[] args)
{
System.out.println("Hello World!");
toHex(60);
toHex_2(60);
toHex_3(60);
}
public static void toHex(int num)
{
for(int x=0;x<8;x++) //一個int整型變量有32個比特(bit),4個位元組(byte)
{
int temp = num & 15;
//15是4個比特表示的最大整數,num與15作與運算,結果為num的最後4個比特位,4位二進制表示一位16進制
if(temp>9)
System.out.println((char)(temp-10+'A'));
else
System.out.println(temp);
num = num >>> 4;
//對二進制進行無符号右移四位,将已經轉化為16進制的二進制移去,對剩餘的二進制位進行循環轉化
}
}
//查表法應用
public static void toHex_1(int num)
{
//定義一個對應關系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(int x=0;x<8;x++)
{
int temp = num & 15;
System.out.print(chs[temp]);
num = num >>> 4;
}
}//輸出的結果為倒序,需要對該程式進行改進
public static void toHex_2(int num)
{
//定義一個對應關系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定義一個臨時容器
char[] arr = new char[8];
int pos = 0;
while(num!=0)
{
int temp = num & 15;
arr[pos++] = chs[temp];
num = num >>> 4;
}
//修改為
for (int x=0;x<pos ;x++ )
{
System.out.print(arr[x]+",");
}//cmd下輸出結果為C,3,空位沒有了
System.out.println();
}
//下面是将上面的輸出倒序的程式修改為16進制正序輸出的程式
public static void toHex_3(int num)
{
//定義一個對應關系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定義一個臨時容器
char[] arr = new char[8];
int pos = arr.length;//pos的位置指在數組的尾部
while(num!=0)
{
int temp = num & 15;
arr[--pos] = chs[temp];
num = num >>> 4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
}