Javaのバイト配列の作成と復号のサンプルです。
| 確認環境 ・Java 8 |
目次
バイト配列を作成する1(getBytesメソッド)
| public byte[ ] getBytes (Charset charset) |
- StringクラスのgetBytesメソッドでバイト配列を作成します。
- 引数は、文字コードを指定します。
- 戻り値は、バイト配列を返します。
- 以下はJava8 API仕様のgetBytesメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#getBytes-java.nio.charset.Charset-
コード
バイト配列を作成するサンプルです。
package test1;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public class Test1 {
public static void main(String[] args) {
Charset charset = StandardCharsets.UTF_8;
String test1 = "あA1";
byte [] a = test1.getBytes(charset);
for (int i: a){
System.out.println(i);
//-29 -127 -126 65 49
}
}
}
11行目のgetBytesメソッドの引数は、StandardCharsetsクラスのUTF_8を指定しています。そのためtry~catchを記述する必要はありません。
バイト配列を作成する2(getBytesメソッド)
| public byte[ ] getBytes (String charsetName) throws UnsupportedEncodingException |
- StringクラスのgetBytesメソッドでバイト配列を作成します。
- 引数は、文字コードを指定します。Stringの文字列で指定するためtry~catchを記述する必要があります。
- 戻り値は、バイト配列を返します。
- 以下はJava8 API仕様のgetBytesメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#getBytes-java.lang.String-
コード
バイト配列を作成するサンプルです。
package test1;
import java.io.UnsupportedEncodingException;
public class Test1 {
public static void main(String[] args) {
byte[] b;
String test1 = "あA1";
try {
b = test1.getBytes("UTF-8");
for (int i: b){
System.out.println(i);
//-29 -127 -126 65 49
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
11行目のgetBytesメソッドの引数は、Stringの文字列です。そのためtry~catchを記述する必要があります。
バイト配列を復号化する(Stringクラス)
| public String (byte[ ] bytes, Charset charset) |
- Stringクラスのコンストラクタでバイト配列を復号化します。
- 1つめの引数は、バイト配列を指定します。
- 2つめの引数は、復号化で使用する文字コードです。
- バイト配列を復号化し新しいStringを生成します。
- 以下はJava8 API仕様のStringクラスのコンストラクタのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#String-byte:A-java.nio.charset.Charset-
コード
バイト配列を復号化するサンプルです。
package test1;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public class Test1 {
public static void main(String[] args) {
Charset charset = StandardCharsets.UTF_8;
String test1 = "あA1";
byte [] a = test1.getBytes(charset);
for (int i: a){
System.out.println(i);
//-29 -127 -126 65 49
}
String b = new String(a,charset);
System.out.println(b); //あA1
}
}
8~14行目は、バイト配列を作成しています。
16行目はStringクラスのコンストラクタでバイト配列を復号化し新しいStringを生成しています。
関連の記事