我输入的十六进制是
C30A010000003602000F73B32F9ECA00E9F2F2E9
我需要将其转换为以下 Base 64 编码字符串:
wwoBAAAANgIAD3OzL57KAOny8uk=
我可以在此站点上模拟此转换:http://www.asciitohex.com/但我似乎无法使用本网站和网络上其他地方建议的各种base64编码器实用程序在Java中进行这种转换。例如,
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64;
public class Test {
public static void main(final String args[]) throws DecoderException {
String hexString = "C30A010000003602000F73B32F9ECA00E9F2F2E9";
String output = new String(Base64.encodeBase64String(hexString.getBytes()));
System.out.println(output);
}
但是输出有所不同:
QzMwQTAxMDAwMDAwMzYwMjAwMEY3M0IzMkY5RUNBMDBFOUYyRjJFOQ==
谁能建议如何让这种转变成功?
谢谢
最佳答案
基本上,hexString.getBytes()
不会执行您期望的操作。它只是将字符串编码为平台默认编码中的字节序列 - 与十六进制无关。
您需要先将十六进制解码为byte[]
。此外,您不需要使用另一个字符串调用 String
构造函数。由于您已经在使用 Apache Commons Codec,因此使用 Hex
是有意义的。解码类。为了清楚起见,我还将单独列出这些步骤:
String hexString = "C30A010000003602000F73B32F9ECA00E9F2F2E9";
byte[] rawData = Hex.decodeHex(hexString.toCharArray());
String output = Base64.encodeBase64String(rawData);
关于java - 从 hex64 转换为 base 64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039524/