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日

相关文章

  • PHP实现压缩图片尺寸并转为jpg格式的方法示例

    要实现压缩图片尺寸并转为jpg格式,可以使用PHP语言的GD库来实现。GD库提供了丰富的图像处理功能,可以帮助我们快速地处理图片。以下是步骤: 步骤一:安装GD库 在PHP安装中,GD库一般都是预装的,我们可以通过phpinfo()函数来确认是否已经开启GD库。如果没有开启,需要修改php.ini文件,把extension=gd.so前面的分号去掉即可。 步…

    Java 2023年5月23日
    00
  • Springboot接收 Form 表单数据的示例详解

    下面是SpringBoot接收Form表单数据的示例详解攻略: 1. 前置知识 在学习本篇攻略之前,需要先了解以下知识点: SpringBoot框架 Controller控制器 Form表单数据 2. 示例说明 在本篇攻略中,我们将演示两个示例: 接收普通表单数据 接收文件上传表单数据 2.1 接收普通表单数据 首先,我们需要创建一个Controller,这…

    Java 2023年6月2日
    00
  • Java终止循环体的具体实现

    Java终止循环体可以使用break和continue两个关键字实现,这两个关键字可以在循环体内使用。 使用break关键字终止循环体 当循环体内部的条件满足某个条件时,可以使用break关键字终止循环体的执行。下面是一个使用break关键字的示例: for (int i = 0; i < 10; i++) { if (i == 5) { break;…

    Java 2023年5月26日
    00
  • java String 可变性的分析

    Java中的String是一个不可变的类,这意味着一旦字符串创建了,就不能更改它的值。然而,在Java的StringBuilder和StringBuffer类中,字符串可变,可以通过追加和插入操作修改现有字符串。本篇攻略将通过示例说明String可变性的特性,帮助读者全面了解String的可变性。 String是不可变的 我们可以使用下面的代码来证明Stri…

    Java 2023年5月27日
    00
  • Android基于API的Tabs3实现仿优酷tabhost效果实例

    下面我将详细介绍“Android基于API的Tabs3实现仿优酷tabhost效果实例”的完整攻略,包括具体的实现过程和两个示例说明。 1. 实现基本思路 实现仿优酷tabhost效果的方案主要涉及两个部分:一是使用API实现Tabs3页面,二是为每个页面添加Fragment布局。 具体步骤: 在布局中添加ViewPager和TabLayout控件 创建Fr…

    Java 2023年5月26日
    00
  • Java实现HDFS文件上传下载

    Java实现HDFS文件上传下载攻略 HDFS是Hadoop的分布式文件系统,它提供了可靠的数据存储和高效的数据访问功能。对于Java程序员而言,使用Java API实现HDFS文件上传下载非常方便。在本篇文章中,我们将详细讲解如何使用Java API实现HDFS文件上传下载。 前置条件 安装Hadoop环境,并确保HDFS服务已经启动。 在Java程序中引…

    Java 2023年5月19日
    00
  • 浅析idea生成war包放入tomcat的路径访问问题

    下面是“浅析idea生成war包放入tomcat的路径访问问题”的完整攻略。 1. 生成WAR包 首先在IDEA中生成WAR包,步骤如下: 点击菜单栏中的 “Build” -> “Build Project” 或者使用快捷键 Ctrl + F9。 在 IDEA 底部状态栏查看构建过程是否成功。 在项目工程根目录下的 target 文件夹中找到生成的WA…

    Java 2023年5月19日
    00
  • 修改及反编译可运行Jar包实现过程详解

    下面是关于“修改及反编译可运行Jar包实现过程详解”的完整攻略,包括两条示例说明: 修改及反编译可运行Jar包实现过程详解 1. 背景说明 在进行Java开发过程中,我们会将程序打包成Jar包进行发布。但是有些时候,我们希望对现有的Jar包进行修改,添加一些我们需要的功能或者修改一些原有的不合适的代码等。这时,我们就需要对Jar包进行反编译,修改对应的源代码…

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