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

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

バイト配列への文字列変換

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

package com.scdev.util;

import java.util.Arrays;

public class StringToByteArray {

	public static void main(String[] args) {
		String str = "PANKAJ";
		byte[] byteArr = str.getBytes();
		// print the byte[] elements
		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.scdev.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);
	}
}

上記のプログラムによって生成された出力が以下の画像に表示されています。バイト配列を作成する際にcharを提供していることに気付きましたか?これは、オートボクシングのおかげで機能しており、charの ‘P’ がバイト配列内の80に変換されているためです。そのため、バイト配列を文字列に変換すると、出力が同じになります。また、Stringには、バイト配列とCharsetを引数として提供できるコンストラクタもあります。したがって、以下のコードも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ドキュメント

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds