Java中byte数组与String互转的正确姿势

陆景行
陆景行
发布时间:2026-10-16| 7人浏览过
原创

在Java开发中,byte数组与字符串的互相转换是IO操作、加密哈希生成等场景的基础需求。正确处理字符集编码是避免乱码和数据损坏的关键,本文详细解析了基于String类的常规转换与基于Base64的二进制编码方法。

使用String类进行基础转换

Java中的 String 类提供了最直接的方式进行转换。需要注意的是,这种方式使用平台默认的字符集,在不同操作系统或环境下可能导致行为不一致。

第1步:将String转换为byte[]

调用 String.getBytes() 方法即可获取字节数组。此操作以平台的默认字符集(通常是UTF-8或GBK,视系统环境而定)对字符串进行编码。

package com.bill.example;

public class StringByteArrayExamples {
    public static void main(String[] args) {
        // 原始字符串
        String string = "hello world";

        // 转换为byte[](使用默认编码)
        byte[] bytes = string.getBytes();

        // 验证:通过构造函数还原为String
        String s = new String(bytes);
        System.out.println("Decoded String : " + s);
    }
}

第2步:指定编码的安全转换(推荐)

为了避免依赖平台默认编码带来的不可控风险,强烈建议在转换时显式指定字符集,例如UTF-8。

String 转 byte[]: 传入编码参数,处理 UnsupportedEncodingException。

byte[] sInput = new byte[0];
try {
    // 明确指定UTF-8编码
    sInput = "这是内容".getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

byte[] 转 String: 同样在构造函数中指定编码。

// sInput 为上一步获取的byte数组
String str = new String(sInput, "UTF-8");

使用Base64处理二进制编码需求

Base64是一种将二进制数据编码为ASCII文本字符串的机制。当你的目的是将二进制数据安全地嵌入到文本协议(如JSON、XML)中,或者需要生成可读的ID时,应优先使用Base64而不是直接按字符集编码转换。

第3步:Java 8+ Base64用法

从Java 8开始,java.util.Base64 类提供了标准的编码器(Encoder)和解码器(Decoder)。

import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        // 原始byte数组
        byte[] bytes = "hello world".getBytes();

        // 使用Base64编码器将byte[]转为String
        String encoded = Base64.getEncoder().encodeToString(bytes);
        System.out.println("Encoded: " + encoded);

        // 使用Base64解码器将String转回byte[]
        byte[] decoded = Base64.getDecoder().decode(encoded);

        // 验证还原后的内容
        System.out.println(new String(decoded));
    }
}

总结

在进行数据类型转换时,需根据输入数据的本质属性选择合适的方法:

  1. 文本与二进制互转:直接使用 String 相关API,务必显式指定字符集(如UTF-8)以保证跨平台一致性。
  2. 二进制数据文本化:使用 Base64 类,适用于需要将二进制流安全地以字符串形式传输或存储的场景。

以上就是Java中byte数组与String互相转换的详细内容,更多关于Java字符编码处理的技术资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。