我试图base-64编码一个十六进制字符串(下面复制),但我从Java8调用编码到base64得到的值与我在不同的在线转换器上得到的值不匹配.我想弄清楚我错过了哪些步骤(或者我正在考虑失误):
//hexString is 07050600030102
Base64.getEncoder().encodeToString(hexString.getBytes(StandardCharsets.UTF_8));
//output I am getting from Java8 ic copied below:
MDcwNTA2MDAwMzAxMDI=
//online converters:
BwUGAAMBAg==
Run Code Online (Sandbox Code Playgroud)
这不符合您的预期:
hexString.getBytes(StandardCharsets.UTF_8)
Run Code Online (Sandbox Code Playgroud)
这只是将十六进制字符串编码为UTF-8 - 您要解析十六进制字符串,以便每对十六进制数字最终作为单个字节.base64结果不同的事实只是因为你base64编码的字节不同.
要将十六进制字符串解析为字节,可以使用Guava(以及其他库)
byte[] bytes = BaseEncoding.base16().decode(hexString);
String base64 = BaseEncoding.base64().encode(bytes);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3173 次 |
| 最近记录: |