将字节数组转换为具有选择基数的字符串的最佳方法是什么? S.O上有大量示例.在其他地方转换为十六进制字符串.我主要感兴趣的是将其转换为十六进制或十进制字符串以外的内容;也是更通用的方式
这是我目前正在做的事情:
byte[] input;
String MyStr = new BigInteger(input).toString(radix);
这是可行的,但是由于Java在Integer中使用了基数的概念.这似乎是在Character中定义的明确目的.不应该有一个更好的方法,而不是先将字节数组转换为BigInteger?感觉像我的Java知识错过了一些必不可少的标准课吗?
编辑:
我想将其用于表示(和打印)不同类型的原始二进制数据的压缩方式.这是我当前使用的实际基数:
String MyStr = new BigInteger(data).toString(Character.MAX_RADIX);
MAX_RADIX(36)使用小写字母和数字的组合.这样可以得到不错的压缩效果,但是如果基数可以包含UPPER字母,那就更好了,这就是为什么我认为我可能会丢失一些东西.
解决方法:
您似乎正在寻找Base64编码.它使用64个不同的字符对值进行编码:大写和小写字母(已经有52个字符),数字(还有10个,包括“ 0”)以及“’和’/”符号(或“-”和“网址安全变体中的“ _”).
如果您使用的是Java 8,则有Base64类:
String str = Base64.Encoder.encodeToString(data);
否则,Apache Commons也具有Base64类:
String str = Base64.encodeBase64String(data);
标签:arrays,string,java
来源: https://codeday.me/bug/1120/2045839.html