Java byte[] 位元組陣列 轉 二進位制 八進位制 十進位制 十六進位制字串
阿新 • • 發佈:2019-02-05
【前言】
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