【Java】Stringとbyte配列の変換方法まとめ

JavaでString型とbyte型の型変換の方法を知りたい
SJISやASCIIなどの文字コードを指定して変換する方法が知りたい
char型とbyte型の変換方法も知りたい

JavaのStringはプログラミングをする上で使用頻度が高いクラスの一つです。Stringを扱う上で、文字列をbyte型に変換したり、byte配列を文字列に変換するいった対応が必要になることがあります。

そこで今回は、String型からbyte型への型変換の方法をわかりやすく解説します!

Stringとbyte配列の変換

ここでは、String型とbyte型の相互変換の方法を詳しく解説します。

byte→String変換

byte型からString型へ変換するためには、Stringクラスのコンストラクタを使用します。Stringのコンストラクタの引数にbyte型を指定することで、String型へ変換することができます。

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

public class Main {
    public static void main(String[] args) throws Exception {
        
        byte[] sbyte = "12345".getBytes();
        String str = new String(sbyte);

        System.out.println("str : " + str);
    }
}

実行結果

str : 12345

サンプルではbyte型を宣言して値を設定し、String型を宣言してStringのコンストラクタに引数でbyte型の変数を指定しています。byte型からString型への型変換は、Stringのコンストラクタを使用することで、指定した型へ変換することが可能です。

String→byte変換

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

以下にgetBytesメソッドを使用して、String型からbyte型へ変換する方法を記述します。

public class Main {
    public static void main(String[] args) throws Exception {
        
        String str = "apple";
        byte[] sbyte = str.getBytes();

        for(int i=0; i<sbyte.length; i++)
        {
            System.out.println(sbyte[i]);
        }
    }
}

実行結果

97
112
112
108
101

サンプルではString型を宣言して値を設定し、byte型を宣言してgetBytesメソッドを使用してString型の値をbyte型に変換しています。

String型からbyte型変換時に、ループで回さずにbyte型配列sbyteをそのまま出力すると、”[[email protected]”と表示されてしまいます。正しく値を取得する場合は、ループでbyte型の配列の要素を1つずつ取り出す必要があります。

また、byte型(バイナリデータ)で表現できる値は10進数で-128から127までとなっていますが、バイナリデータを解析するときは10進数よりは16進数に変換したほうが、都合が良い場合もあります。

バイナリデータを16進数に変換する場合は、toHexStringメソッドを使用すれば簡単に変換できます。

サンプルプログラムのSystem.out.printlnの部分を以下のように変更します。

System.out.println(Integer.toHexString(sbyte[i]));

実行結果

61
70
70
6c
65

文字コードを指定して変換する

String型⇔byte型変換時に、変換した文字列を異なるOS間でやり取りした場合、文字化けが発生する可能生もあります。

例えば、Windowsで変換した文字列をLinuxで出力した場合、文字コードがShift_JISのままでは文字化けして表示される可能性もあります。

そのような問題を防ぐため、getBytesメソッドには文字コードを指定して変換することが可能です。

以下に文字コードを指定した変換方法を記述します。

String str = "apple";
byte[] sbyte = str.getBytes("UTF-8");

この例ではgetBytesメソッドに文字コード"UTF-8"を指定していますが、Shift_JISヘ変換する場合は"ISO-8859-1"を、ASCIIで変換する場合は"US-ASCII"を使用します。

charとbyte配列の変換

byte→char変換

byte型からchar型へ変換するためには、byte型の値をchar型へキャストすることで簡単に型変換ができます。

以下にキャストを使用しての変換方法を記述します。

public class Main {
    public static void main(String[] args) throws Exception {
        
        byte b = 100;
        char c = (char)b;
        System.out.println("c : " + (int)c);
    }
}

実行結果

c : 100

char→byte変換

char型からbyte型への変換は、String型のgetBytesメソッドを使用する必要があるため、まずchar型をString型に変換する必要があります。

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

public class Main {
    public static void main(String[] args) throws Exception {
        
        char c = 'a';
        String str = String.valueOf(c);
        byte b[] = str.getBytes();
        
        for(int i=0; i<b.length; i++)
        {
            System.out.println("b : " + b[i]);
        }
    }
}

実行結果

b : 97

サンプルではchar型の値を宣言して値を設定し、valueOfメソッドを使用してString型に変換しています。

次にString型の変数に対してgetBytesメソッドを使用してbyte型の配列に変換しています。

Stringのさまざまな型変換

String型の型変換は、今回紹介したdouble型以外にもさまざまな型で変換することが可能です。Stringの型変換については以下の記事で詳しく説明しています!

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

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

まとめ

String⇔byte型へ変換する基本的な方法や注意点文字コードを指定する方法などを説明しました。

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

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。