java - 从 hex64 转换为 base 64 字符串

标签 java encoding base64

我输入的十六进制是

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/

相关文章:

java - 路由器/经销商代理不传送消息

c# - 类似于C#的XmlDocument的Java实现

ruby-on-rails - 您可以在没有源代码的情况下分发 Ruby on Rails 应用程序吗?

javascript - 阈值图像颜色 - Base64

java - Base64 编码/解码问题 : decoded string is '?'

java - 如果为空,则禁用 EditText 数组索引

java - 如何使用java发送请求的多个响应

java - IE 无法理解 Content-disposition header 字段,但适用于 Chrome

.net - Base64 编码数据最大大小

javascript - 将 HTML 转换为数据 :text/html link using JavaScript