2012-07-09 99 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可存储的号码,我建议您为分数部分的基本转换运行自己的函数。