2016-01-25 9 views
6

私が提供している16進値から文字列を作成する必要があります。たとえば、代わりに次のように割り当てるのHex値を文字列に渡す方法 - Android

String message = "123"; 

私はこのように割り当てる:

String message = 0x31, 0x32, 0x33; 

が可能ということですか?おそらく、また、使用している文字セットを指定する必要がありますが、これはそれを行います

答えて

7

String message = new String(new byte[] {0x31, 0x32, 0x33}); 
System.out.println(message); // prints 123. 

あなたは文字を指定したいなかった場合は、それがStringコンストラクタのちょうど別のパラメータである設定しました。次の例では19+ AndroidのAPIをターゲットにしている場合は動作します:

String message = new String(new byte[] {0x31, 0x32, 0x33}, StandardCharsets.UTF_8); 
+0

あなたは間違いなくそのバイトシーケンスに関連するエンコーディングを指定する必要があります。ただし、デフォルトではutf-8になります。 – njzk2

0

あなたは(たとえば、あなたはJSONオブジェクトに、サーバーから値を取得している)のHex値のString表現を持っている場合は、必要がある場合がありますそれを16進値として扱うようにしてください。あなたはimport org.apache.commons.codec.binary.Hex;をインポートして、これを行うことができます。

String stringHex = "a37e7391ebbc939a8489788d93015914eeee423132e2516711e81d53777067ee" 
String yourString = new String(Hex.decodeHex(stringHex.toCharArray()), StandardCharsets.UTF_8); 

ちょうど上記の回答に追加したいです。

関連する問題