我想将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