如何在Java中将字符串转换为字节数组

时间:2020-01-09 10:35:29  来源:igfitidea点击:

这篇文章展示了如何在Java中将String转换为字节数组(Byte [])。

在Java中将字符串转换为字节数组的选项

Java中的String类具有getBytes()方法,用于将String编码为字节序列。此方法也有两个重载的变体,我们可以在其中传递要用于编码的字符集。

  • byte [] getBytes()–使用平台的默认字符集将此字符串编码为字节序列,并将结果存储到新的字节数组中。
  • byte [] getBytes(String charsetName)引发UnsupportedEncodingException-使用命名的字符集将此String编码为字节序列,并将结果存储到新的字节数组中。
  • byte [] getBytes(Charset charset)–使用给定的字符集将此字符串编码为字节序列,并将结果存储到新的字节数组中。

使用getBytes()方法

本示例说明如何使用getBytes()方法将Java中的String转换为字节数组。

import java.util.Arrays;

public class StringToByteArr {
  public static void main(String[] args) {
    String str = "This is a test String";
    // converting to byte[]
    byte[] b = str.getBytes();
    System.out.println("String as Byte[]- " + Arrays.toString(b));
  }
}

输出:

String as Byte[]- [84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 116, 101, 115, 116, 32, 83, 116, 114, 105, 110, 103]

打印字节数组时,它会显示字符串中字符的ASCII码。

如果要指定在Java中将String转换为Byte []时要使用的字符集,则可以使用重载的getBytes()方法。如果使用的字符集名称作为String传递,则确实需要捕获异常UnsupportedEncodingException。

因此最好使用传递字符集实例的第二个重载方法。
以下程序显示了两种方式;将字符集名称作为String传递,并在其中传递字符集实例。

public class StringToByteArr {
  public static void main(String[] args) {
    String str = "This is a test String";
    try{
      byte[] b = str.getBytes("UTF-16");
      System.out.println("String as Byte[]" + b);
      
    }catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    byte[] byteArr;
    // Using the charSet instance
    byteArr = str.getBytes(Charset.forName("UTF-16"));
    byteArr = str.getBytes(StandardCharsets.UTF_16);
  }
}

从程序中可以看到,传递字符集实例时可以用两种方法完成。

byteArr = str.getBytes(Charset.forName("UTF-16"));

第二个byteArr = str.getBytes(StandardCharsets.UTF_16);可以在Java 7使用.