Javaで文字列をバイト配列、バイト配列を文字列に変換する方法

今日は、JavaでStringをバイト配列に変換する方法を学びます。また、Javaでバイト配列をStringに変換する方法も学びます。

Stringからバイト配列へ

プラットフォームのデフォルトの文字セットを使用して、文字列をバイトのシーケンスにエンコードするには、StringクラスのgetBytes()メソッドを使用できます。このメソッドはオーバーロードされており、Charsetを引数に渡すこともできます。以下は、JavaでStringをバイト配列に変換する方法を示す簡単なプログラムです。

package com.journaldev.util;

import java.util.Arrays;

public class StringToByteArray {

	public static void main(String[] args) {
		String str = "PANKAJ";
		byte[] byteArr = str.getBytes();
		// byte[]要素を出力
		System.out.println("String to byte array: " + Arrays.toString(byteArr));
	}
}

上記のプログラムを実行すると、以下の画像の出力が表示されます。また、以下のコードを使用してバイト配列を取得することもできます。

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

ただし、Charset名を指定した場合は、UnsupportedEncodingException例外をキャッチするか、スローする必要があります。より良いアプローチは、Java 1.7で導入されたStandardCharsetsクラスを使用することです。

byte[] byteArr = str.getBytes(StandardCharsets.UTF_8);

以上が、JavaでStringをバイト配列に変換するさまざまな方法です。

Javaバイト配列を文字列に変換する

Javaでバイト配列を文字列に変換する方法を示すシンプルなプログラムを見てみましょう。

package com.journaldev.util;

public class ByteArrayToString {

	public static void main(String[] args) {
		byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
		byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

		String str = new String(byteArray);
		String str1 = new String(byteArray1);

		System.out.println(str);
		System.out.println(str1);
	}
}

以下の画像は、上記のプログラムによって生成される出力を示しています。バイト配列を作成する際に文字を提供していることに気づきましたか?これは、オートボクシングのおかげであり、文字 ‘P’ がバイト配列に 80 に変換されているためです。そのため、バイト配列を文字列に変換する際の出力が同じであることになります。文字列には、バイト配列と文字セットを引数として指定できるコンストラクタもあります。したがって、以下のコードもJavaでバイト配列を文字列に変換するために使用できます。

String str = new String(byteArray, StandardCharsets.UTF_8);

Stringクラスには、バイト配列のサブセットを文字列に変換するメソッドもあります。

byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };
String str = new String(byteArray1, 0, 3, StandardCharsets.UTF_8);

上記のコードは完璧であり、 ‘str’ の値は ‘PAN’ になります。これがJavaでバイト配列を文字列に変換する方法のすべてです。

さらに配列の例については、当社のGitHubリポジトリをご覧ください。

参考文献:getBytes APIドキュメント

Source:
https://www.digitalocean.com/community/tutorials/string-byte-array-java