Java中字符串与byte数组之间的相互转换

Java中字符串与byte数组之间的相互转换是经常使用的操作,下面是完整攻略:

字符串转byte数组

将字符串转换为byte数组可以通过以下两种方式实现:

1.使用String类的getBytes()方法

String str = "hello, world!";
byte[] bytes = str.getBytes();

这里的getBytes()方法会将字符串转换为默认字符集的byte数组。如果需要指定字符集可以传入参数,例如:

byte[] bytes = str.getBytes("UTF-8");

2.使用Charset类的encode()方法

String str = "hello, world!";
Charset charset = Charset.defaultCharset();
ByteBuffer buffer = charset.encode(str);
byte[] bytes = buffer.array();

这里的encode()方法也会将字符串转换为byte数组,但是可以通过Charset类来指定字符集。

byte数组转字符串

将byte数组转换为字符串可以通过以下两种方式实现:

1.使用String类的构造方法

byte[] bytes = new byte[]{104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33};
String str = new String(bytes);

这里使用String类的构造方法,传入byte数组作为参数。

2.使用Charset类的decode()方法

byte[] bytes = new byte[]{104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33};
Charset charset = Charset.defaultCharset();
ByteBuffer buffer = ByteBuffer.wrap(bytes);
String str = charset.decode(buffer).toString();

这里使用Charset类的decode()方法来将byte数组转换为字符串。需要先将byte数组包装成ByteBuffer对象,再调用decode()方法转换成字符串。

示例说明

示例1:字符串转byte数组

String str = "中文字符串";
byte[] bytes = str.getBytes("UTF-8");
System.out.println(Arrays.toString(bytes));

输出结果为:

[-28, -72, -83, -26, -106, -121, -25, -67, -91, -28, -72, -85, -27, -101, -67, -27, -118, -104]

可以看到,由于"中文字符串"不是ASCII码,因此使用UTF-8编码得到的byte数组是负数。

示例2:byte数组转字符串

byte[] bytes = new byte[]{-28, -72, -83, -26, -106, -121, -25, -67, -91, -28, -72, -85, -27, -101, -67, -27, -118, -104};
Charset charset = Charset.forName("UTF-8");
String str = new String(bytes, charset);
System.out.println(str);

输出结果为:

中文字符串

可以看到,使用指定的UTF-8编码将byte数组转换为字符串后,字符串的值正好是原来的"中文字符串"。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中字符串与byte数组之间的相互转换 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)

    下面是详细讲解“2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)”的完整攻略: 简介 Dubbo 是阿里巴巴提供的一个高性能 RPC 框架,支持多种协议和序列化方式,并提供了完善的服务治理方案。本文将介绍如何在 SpringBoot 中整合 Dubbo,使用 ZooKeeper 作为注册中心。完整代码可以在 GitHub…

    Java 2023年5月19日
    00
  • Java方法的可变参数类型实例分析

    首先我们需要了解什么是Java方法的可变参数类型。 Java方法的可变参数类型 Java方法的可变参数类型指的是:在方法的参数列表中,允许最后一个参数为可变参数,即不确定数量的参数。在方法中,可变参数被声明为数组类型,在调用方法时可以传入任意数量的参数。 可变参数的语法为: 修饰符 返回值类型 方法名(参数类型… 参数名) { // 方法体 } 其中的参…

    Java 2023年5月26日
    00
  • 浅谈java二进制、十进制、十六进制、字符串之间的相互转换

    Java进制转换攻略 Java中提供了十进制、二进制、八进制、十六进制的进制表示,同时也支持将不同进制之间进行转换,并提供字符串和数字之间的转换方法。 十进制转换为其他进制 十进制转二进制 Java中可以使用 Integer 类的 toBinaryString 方法将十进制数转换为二进制字符串,例如: int decimalNum = 123; String…

    Java 2023年5月27日
    00
  • 详解spring boot实现多数据源代码实战

    下面我将为你详细讲解“详解springboot实现多数据源代码实战”的完整攻略。 什么是多数据源 多数据源即在一个应用中使用多个数据源,通常在企业级应用程序中使用,因为这些程序通常需要访问多个不同的数据库。使用多个数据源允许应用程序同时连接到不同的数据源,以提高性能并减少响应时间。 SpringBoot实现多数据源 SpringBoot 非常适合于创建微服务…

    Java 2023年5月15日
    00
  • maven install报错中程序包xxx不存在的问题解决

    当我们使用Maven构建Java项目时,可能会遇到mvn install时报错,提示程序包不存在的问题。这种问题通常是由于Maven无法找到所需的依赖项而导致的。 以下是解决“maven install报错中程序包不存在的问题”的攻略: 1. 确认依赖项是否正确引入 首先,需要确认pom.xml中的依赖项是否正确引入。我们可以检查一下Maven仓库中的依赖项…

    Java 2023年6月2日
    00
  • Java中让界面内的时间及时更新示例代码

    下面我来详细讲解一下“Java中让界面内的时间及时更新”的完整攻略,具体步骤如下: 1. 确定界面组件 首先需要确定要更新时间的界面组件,可以是JLabel、JTextField、JTextPane等。通常情况下,我们会选用JLabel组件来显示时间。 2. 创建时间更新线程 由于时间是需要不断更新的,所以我们需要创建一个线程来负责更新时间。这个线程可以用J…

    Java 2023年5月20日
    00
  • Java 如何将网络资源url转化为File文件

    将网络资源URL转换为File文件需要借助Java中的IO流和网络操作类。下面将会详细介绍Java如何将网络资源URL转化为File文件的完整攻略。 步骤一:获取URL 首先要获取网络资源的URL,可以使用Java中的URL类。以下示例演示如何获取指定URL的网络资源: import java.net.*; public class GetUrlConten…

    Java 2023年5月19日
    00
  • Jmeter中的timeshift()函数获取当前时间进行加减

    Jmeter是一款功能强大的压力测试工具,在实际使用中,我们通常需要对请求进行定制化操作,例如,将请求时间加减一定的时间,以观察服务器在不同时间的响应情况。这时,我们可以使用Jmeter中的timeshift()函数来进行操作。 什么是timeshift()函数 timeshift()函数是Jmeter自带的日期操作函数,用于获得和操作当前时间。该函数可以根…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部