スライドショー

JavaのgetBytes|基本的な使い方やStingとbyte配列の相互変換

JavaのString型の変数を扱う上で、byte型に変換が必要なことがあります。

この記事では、getBytesの使い方やString型とbyte型の変換方法について、以下の内容で解説していきます。

  • そもそもbyte型ってなに?
  • getBytesの使い方について知りたい
  • byte型のさまざまな変換方法について知りたい
  • 16進数文字列⇔byte配列の変換方法が知りたい

getBytesの基本的な使い方から変換方法までわかりやすく解説していますので、ぜひ参考にしてください。

Javaのbyte型とは

byte型とは1バイト(8ビット)のサイズの整数値を表します。

Javaのbyte型は符号付きで-128から127までです。文字列は文字の配列ですが、それぞれの文字は文字コードに従ってbyte型に変換することができます。

ですので、文字列はbyte型の配列に変換できますし、byte型の配列を文字列に変換することができます。

JavaのgetBytesとは

getBytesメソッドは、対象の文字列をバイトシーケンスにエンコード化して、結果をByte型の配列として返すメソッドです。

以下のように記述して使用します。

String.getBytes()

また、getBytesは引数に文字コードを指定することもできます。

String.getBytes(Charset charset)

文字コードはUTF-8、Shift-jis、ASCIIコードなども指定可能です。

文字コードについては、以下の記事で詳しく解説しています。

【Java入門】文字コードの確認・変換・指定する方法を解説!
更新日 : 2019年3月28日

getBytesの使い方

ここでは、getBytesメソッドを使用して、String型とByte型の相互変換の方法を説明します。

byte配列からStringへの変換

byte型からString型へ変換する場合は、String型のコンストラクタにbyte型の値を指定します。

以下にbyte型からString型へ変換する方法を記述します。

import java.nio.charset.StandardCharsets;
 
public class Main {
 
    public static void main(String[] args) {

        //byte → String
        byte[] sbyte = "apple".getBytes(StandardCharsets.UTF_8);
        String str = new String(sbyte);
        
        System.out.println("str : " + str);
    }
 
}

実行結果:

str : apple

サンプルではbyte型の配列を宣言してgetBytesメソッドでバイナリの文字列を設定し、Stringのコンストラクタの引数に設定したバイナリの文字列を指定しています。

また、getBytesメソッドは文字コードを指定することも可能です。文字コードの指定は、getBytesメソッドで引数に文字コードを指定します。

なお、StandardCharsetsクラスはJava7で追加され、文字コードを指定する際に使用します。

Stringからbyte配列への変換

String型からbyte型へ変換する場合は、変換時にgetBytesメソッドを使用します。

以下にString型からbyte型へ変換する方法を記述します

public class Main {
 
    public static void main(String[] args) {
    	
        //String→byte
        String str = "apple";
        byte[] sbyte = str.getBytes();
        
        for(int i=0; i

実行結果:

97
112
112
108
101

サンプルではbyte型の配列を宣言してString型の変数に対して、getBytesメソッドを使用してByte型に変換しています。byte型の値は-128から127の10進数で表現するため、ループで配列の要素ごとに出力すると、実行結果のようになります。

また、getBytesメソッドはString→byte変換時にも文字コードを指定することが可能です。

byte型のさまざまな変換方法

byte型は、さまざまな方法で変換することができます。

byte型の変換方法については、以下の記事でも詳しく解説しています!

【Java】Stringとbyte配列の変換方法まとめ
更新日 : 2019年6月12日

16進数文字列⇔byte配列の変換

実際のシステム開発では、バイナリデータや文字列を16進数のデータに変換して、端末間でやりとりすることがあります。

byte、Stringを16進数に変換するには、2つの方法があります。

1つ目は、「Apache Commons Codec」のHexクラスを使用することで変換することができます。

「Apache Commons Codec」のライブラリは、以下のページからダウンロードできます。

http://commons.apache.org/proper/commons-codec/download_codec.cgi

2つ目は、DatatypeConverterクラスを利用する方法です。
このクラスを使うとライブラリを追加する必要はありません。

byte配列から16進数文字列への変換

byte型から16進数の文字列に変換する方法を、以下に記述します。

DatatypeConverterクラスを使います。

import javax.xml.bind.DatatypeConverter;
 
public class Main {
 
    public static void main(String[] args) {
    	
        //byte→16進数文字列
        byte[] sbyte = "apple".getBytes();
        String str = DatatypeConverter.printHexBinary(sbyte);
        
        System.out.println(str);
    }
 
}

実行結果:

6170706C65

サンプルでは、バイト型配列にバイナリ文字列を設定し、DatatypeConverterクラスのprintHexBinaryメソッドを使用して、バイナリ文字列を指定しています。

16進数文字列からbyte配列への変換

16進数文字列からbyte型へ変換する方法を、以下に記述します。

import javax.xml.bind.DatatypeConverter;
 
public class Main {
 
    public static void main(String[] args) {
    	
        //16進数文字列→byte
        String str = "6170706c65";
        byte[] sbyte = DatatypeConverter.parseHexBinary(str);
        
        System.out.println(new String(sbyte));
    }
 
}

実行結果:

apple

サンプルでは、String型の16進数文字列を設定し、DatatypeConverterクラスのparseHexBinaryメソッドを使用して、引数に16進数文字列を指定しています。

Stringについてもっと詳しく知りたい方へ

Stringのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

【Java String】7つの基本的な使い方で文字列操作を理解しよう
更新日 : 2019年5月7日

まとめ

ここでは、getBytesメソッドを使用したString型byte型の相互変換の方法や、文字コード指定、16進数への変換方法などを説明しました。

String型⇔byte型に変換する処理は、さまざまな場面で使用することがあると思います。
もし、getBytesメソッドの使用方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説