什么是将字节数组转换为指定进制字符串的最佳方法?在S.O.和其他地方有大量的示例可以将其转换为十六进制字符串。我主要感兴趣的是转换为不同于十六进制或十进制字符串的内容;同时,更通用的方式也很重要。
这是我目前使用的方法:
这样做是可行的,但由于Java有基数(radix)的概念,就像在Integer中使用的一样。这似乎是Character所定义的显式目的。难道就没有更好的方法来做这件事,而不是先将字节数组转换为BigInteger吗?感觉我的Java知识缺少了一些必要的标准类?
编辑: 我想使用这种方法压缩表示和打印不同类型的原始二进制数据。这是我目前使用的实际基数:
这是我目前使用的方法:
byte[] input;
String MyStr = new BigInteger(input).toString(radix);
这样做是可行的,但由于Java有基数(radix)的概念,就像在Integer中使用的一样。这似乎是Character所定义的显式目的。难道就没有更好的方法来做这件事,而不是先将字节数组转换为BigInteger吗?感觉我的Java知识缺少了一些必要的标准类?
编辑: 我想使用这种方法压缩表示和打印不同类型的原始二进制数据。这是我目前使用的实际基数:
String MyStr = new BigInteger(data).toString(Character.MAX_RADIX);
最大基数(36)使用小写字母和数字的组合。这样可以得到相当不错的压缩效果,但如果基数还包括大写字母,效果会更好,这就是为什么我认为可能有东西我没注意到。
byte[]
,而不是一个Byte[]
,因为没有一个 BigInteger 构造函数可以接受一个Byte[]
。 - ericbn