1. 程式人生 > >Java byte[] 位元組陣列 轉 二進位制 八進位制 十進位制 十六進位制字串

Java byte[] 位元組陣列 轉 二進位制 八進位制 十進位制 十六進位制字串

【前言】

java中很多時候需要將byte[]轉為各種進位制的字串顯示,從2,8,10,16到比較高階的base64(編碼),

至於什麼時候需要這樣,當你遇到這樣的問題就知道了。

【程式碼】

進位制轉換比較簡單,直接上程式碼,編碼轉換見其他文章。例如這個

package com.uikoo9.util.encrypt;

import java.math.BigInteger;

public class QEncodeUtil {
	public static void main(String[] args) {
		String s = "woaini";
		byte[] bytes = s.getBytes();
		
		System.out.println("將woaini轉為不同進位制的字串:");
		System.out.println("可以轉換的進位制範圍:" + Character.MIN_RADIX + "-" + Character.MAX_RADIX);
		System.out.println("2進位制:"	+ binary(bytes,	2));
		System.out.println("5進位制:"	+ binary(bytes,	5));
		System.out.println("8進位制:"	+ binary(bytes,	8));
		System.out.println("16進位制:"	+ binary(bytes,	16));
		System.out.println("32進位制:"	+ binary(bytes,	32));
		System.out.println("64進位制:"	+ binary(bytes,	64));// 這個已經超出範圍,超出範圍後變為10進位制顯示
		
		System.exit(0);
	}
	
	/**
	 * 將byte[]轉為各種進位制的字串
	 * @param bytes byte[]
	 * @param radix 基數可以轉換進位制的範圍,從Character.MIN_RADIX到Character.MAX_RADIX,超出範圍後變為10進位制
	 * @return 轉換後的字串
	 */
	public static String binary(byte[] bytes, int radix){
		return new BigInteger(1, bytes).toString(radix);// 這裡的1代表正數
	}
}

【輸出】

將woaini轉為不同進位制的字串:
可以轉換的進位制範圍:2-36
2進位制:11101110110111101100001011010010110111001101001
5進位制:114203022342344442242
8進位制:3566754132267151
16進位制:776f61696e69
32進位制:3ndtgmirj9
64進位制:131320259374697