首页  >  文章  >  Java  >  在 Java 中如何将字节数组转换为字符串,反之亦然?

在 Java 中如何将字节数组转换为字符串,反之亦然?

Susan Sarandon
Susan Sarandon原创
2024-11-09 05:19:02718浏览

How can I convert byte arrays to strings and vice versa in Java?

字节数组转换

Java 提供了各种方法将字节数组转换为字符串,反之亦然。这种转换对于数据传输和操作至关重要。一种常见的场景是通过网络发送字节数据并在接收端重建它。

字节数组到字符串转换

要将字节数组转换为字符串,可以使用 Arrays.toString() 方法。它接受一个数组作为输入,并返回用方括号括起来的其元素的字符串表示形式。例如:

byte[] data = new byte[] {4, 6, 8, 10};
String dataString = Arrays.toString(data); // prints [-44, 6, 8, 10]

字符串到字节数组转换

但是,此字符串表示形式无法直接转换回字节数组。为了实现这一点,有必要从字符串中解析各个字节值。一种方法是使用 String.split() 方法分隔字节值,然后使用 Byte.parseByte() 方法解析它们。

String response = "[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]";

String[] byteValues = response.substring(1, response.length() - 1).split(",");
byte[] bytes = new byte[byteValues.length];

for (int i = 0, len = bytes.length; i < len; i++) {
    bytes[i] = Byte.parseByte(byteValues[i].trim());
}

替代解决方案

或者,ByteBuffer 类可用于有效地执行字节数组转换。它提供了像wrap()这样的方法来从字节数组创建缓冲区,以及array()来从缓冲区检索底层字节数组。

byte[] data = new byte[] {4, 6, 8, 10};

ByteBuffer buffer = ByteBuffer.wrap(data);
byte[] dataCopy = buffer.array(); // returns a copy of the original byte array

注意: Arrays.toString () 方法还可以与原始数组(例如 int、double 和 long)一起使用,以生成其元素的字符串表示形式。然而,转换回原始类型数组需要额外的解析机制,这些机制是特定于语言的并且根据类型而变化。

以上是在 Java 中如何将字节数组转换为字符串,反之亦然?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn