Java 中的字符串与字节数组转换312


在 Java 中,字符串和字节数组是两种不同的数据类型。字符串表示 Unicode 字符序列,而字节数组表示 8 位无符号整数的序列。在某些情况下,需要在字符串和字节数组之间进行转换。

将字符串转换为字节数组

可以通过以下方式将字符串转换为字节数组:

使用 ()


getBytes() 方法返回一个包含字符串编码的字节数组。编码由平台缺省字符集决定。例如:```java
String str = "Hello";
byte[] bytes = ();
```

使用特定编码


如果需要指定特定编码,可以使用 getBytes(String charsetName) 方法。例如,要将字符串转换为 UTF-8 字节数组:```java
byte[] bytes = ("UTF-8");
```

将字节数组转换为字符串

可以通过以下方式将字节数组转换为字符串:

使用 String(byte[])


String(byte[]) 构造函数创建一个字符串,其编码由平台缺省字符集决定。例如:```java
String str = new String(bytes);
```

使用特定编码


如果需要指定特定编码,可以使用 String(byte[], String charsetName) 构造函数。例如,要将字节数组转换为 UTF-8 字符串:```java
String str = new String(bytes, "UTF-8");
```

处理非 ASCII 字符

当处理非 ASCII 字符时,需要注意字符集。如果使用错误的字符集,则转换可能会产生意外结果。例如,如果将 UTF-8 编码的字符串转换为 ISO-8859-1 字节数组,则包含非 ASCII 字符的部分将被损坏。

Base64 编码

Base64 是一种将二进制数据编码为 ASCII 字符串的方法。它通常用于在 HTTP 请求中传输二进制数据。Java 中提供了 Base64 类来处理 Base64 编码。例如:

编码字节数组


```java
String encoded = ().encodeToString(bytes);
```

解码字符串


```java
byte[] decoded = ().decode(encoded);
```

其他注意事项* 不同的字符集可能对相同字符使用不同的编码。例如,UTF-8 和 ISO-8859-1 为字母 "A" 使用不同的字节编码。
* 字符串和字节数组之间的转换可能会导致数据丢失,特别是当涉及到非 ASCII 字符时。
* 在执行字符串和字节数组之间的转换之前,确定要使用的字符集非常重要。

2024-11-03


上一篇:深入剖析《数据结构和算法》Java 版:掌握编程基石

下一篇:Java 数组:定义与初始化