2012-07-09 91 views
1

我想將base16字符串轉換爲base32字符串。例如,如果我有一個base-16字符串 - 「000000000288」,現在我想將它轉換爲base-32對應字符(「K-8」)。在Android中將Base-16字符串轉換爲Base-32

有一個網站,該網站做的:

http://www.unitconversion.org/unit_converter/numbers.html

+3

你需要解析十六進制,然後在base32格式。搜索圍繞此問題的其他問題 - 關於將十六進制解析爲字節數組的問題存在*加載*,並且還有用於base32格式化的庫。 – 2012-07-09 06:31:06

回答

1

我認爲你可以這樣來做:

int number = Integer.parseInt("000000000288", 16); 
String base32 = Integer.toString(number, 32); 

編輯:對不起,我忘了加上基數參數到第一行。我現在改變了它。

+2

轉換爲int時,請始終注意可能的精度損失。使用Long而不是Integer可能是一個更好的主意。 – seePatCode 2012-11-15 14:46:11

0

我發現java的BigInteger是其中所有最好的位操作。在其廣泛的用途(主要是存儲大量,直到您的內存堆棧可以允許和其廣泛的支持的操作),您可以選擇基地轉換從2到36

示例代碼:

BigInteger num=new BigInteger("000000000288",16);  //Store as Hexa 

//Display the result using BigInteger.toString(radix) 
System.out.println("Result = "+num.toString(32)); //Showing result in 32 base 

Ofcourse,如果你正在處理的有小數部分數字,你將不得不使用的Integer.toString(radix) Magicode的方法。或者,如果您的號碼大於int可存儲的號碼,我建議您爲分數部分的基本轉換運行自己的函數。