Java泛型将字节数组转换为字符串(非十六进制,十进制)

标签 java arrays string

将字节数组转换为具有所选基数的字符串的最佳方法是什么? 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) 使用小写字母和数字的组合。这提供了一个不错的压缩,但如果基数可以包含大写字母会更好,这就是为什么我认为我可能会遗漏一些东西。

最佳答案

你好像在找Base64编码。这使用 64 个不同的字符来编码一个值:大写和小写字母(已经有 52 个字符)、数字(另外 10 个,包括“0”)以及“+”和“/”符号(或“-”和 url 安全变体中的“_”)。

如果您使用的是 Java 8,则有 Base64类:

String str = Base64.Encoder.encodeToString(data);

否则,Apache Commons 有一个 Base64类也是:

String str = Base64.encodeBase64String(data);

关于Java泛型将字节数组转换为字符串(非十六进制,十进制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28707283/

相关文章:

java - 如何获取Android模拟器当前的日期格式

java - Tomcat 上下文初始化失败

c++ - 计算数组的平均值

数组中的 JavaScript 函数参数

java - 如何替换字符串中的特殊字符?

java - this.getClass().getClassLoader() 和 ClassLoader

java - GET 方法中的内容类型未填充

python - While 循环没有迭代数组中的正确解决方案

python - 字符串操作/正则表达式 - 查找和替换

java - 从java中的其他 Activity 更改字符串的值