我想將base16字符串轉換爲base32字符串。例如,如果我有一個base-16字符串 - 「000000000288」,現在我想將它轉換爲base-32對應字符(「K-8」)。在Android中將Base-16字符串轉換爲Base-32
有一個網站,該網站做的:
http://www.unitconversion.org/unit_converter/numbers.html
我想將base16字符串轉換爲base32字符串。例如,如果我有一個base-16字符串 - 「000000000288」,現在我想將它轉換爲base-32對應字符(「K-8」)。在Android中將Base-16字符串轉換爲Base-32
有一個網站,該網站做的:
http://www.unitconversion.org/unit_converter/numbers.html
我認爲你可以這樣來做:
int number = Integer.parseInt("000000000288", 16);
String base32 = Integer.toString(number, 32);
編輯:對不起,我忘了加上基數參數到第一行。我現在改變了它。
轉換爲int時,請始終注意可能的精度損失。使用Long而不是Integer可能是一個更好的主意。 – seePatCode 2012-11-15 14:46:11
我發現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
可存儲的號碼,我建議您爲分數部分的基本轉換運行自己的函數。
你需要解析十六進制,然後在base32格式。搜索圍繞此問題的其他問題 - 關於將十六進制解析爲字節數組的問題存在*加載*,並且還有用於base32格式化的庫。 – 2012-07-09 06:31:06