You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中将'0xFF'格式的十六进制字符串转换为Base64编码字符串?

解决方案

要实现从0xFF...格式的十六进制字符串到Base64编码的转换,核心是先把十六进制字符串解析为二进制字节数组,再对字节数组做Base64编码,而不是直接编码字符串本身。以下是两种可行的实现方式:

方式一:使用JDK自带工具(Java 8+)

JDK内置的javax.xml.bind.DatatypeConverter类可以直接解析十六进制字符串,无需引入第三方库:

import java.util.Base64;
import javax.xml.bind.DatatypeConverter;

public class HexToBase64 {
    public static void main(String[] args) {
        String hexString = "0xFFA1B2C3"; // 你的SQL Server返回的十六进制字符串
        
        // 1. 移除开头的"0x"前缀
        String pureHex = hexString.substring(2);
        
        // 2. 将纯十六进制字符串解析为二进制字节数组
        byte[] binaryData = DatatypeConverter.parseHexBinary(pureHex);
        
        // 3. 对字节数组执行Base64编码
        String base64String = Base64.getEncoder().encodeToString(binaryData);
        
        System.out.println(base64String); // 输出最终的Base64结果
    }
}

方式二:使用Apache Commons Codec(第三方库)

如果项目已依赖Apache Commons Codec,或者更偏好通用工具类,可采用以下实现:

  1. 先引入Maven依赖(示例):
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>
  1. 转换代码:
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;

public class HexToBase64 {
    public static void main(String[] args) {
        String hexString = "0xFFA1B2C3";
        
        // 移除"0x"前缀
        String pureHex = hexString.substring(2);
        
        // 解析十六进制字符串为字节数组
        byte[] binaryData = Hex.decodeHex(pureHex.toCharArray());
        
        // 生成Base64编码字符串
        String base64String = Base64.encodeBase64String(binaryData);
        
        System.out.println(base64String);
    }
}

原有代码的问题说明

你之前写的Base64.getEncoder().encodeToString(HexString.getBytes()),是把0xFF...这个字符串本身的字符编码(比如UTF-8)转成字节数组再做Base64编码——相当于把"0xFFA1B2C3"当成普通文本处理,完全没有解析十六进制对应的二进制数据,所以结果不符合需求。

内容的提问来源于stack exchange,提问作者Alex Stump

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:02:39