可能性の重複:
Convert a string representation of a hex dump to a byte array using Java?のJava - 文字列
例えば、私は、文字列 "DEADBEEF" を持っています。どのようにバイト[]バイト= {0xDE、0xAD、0xBE、0xEF}に変換できますか?
可能性の重複:
Convert a string representation of a hex dump to a byte array using Java?のJava - 文字列
例えば、私は、文字列 "DEADBEEF" を持っています。どのようにバイト[]バイト= {0xDE、0xAD、0xBE、0xEF}に変換できますか?
ループと各ペアは個別に変換する:
byte[] bytes = new byte[str.length()/2];
for(int i = 0; i < str.length(); i+=2)
bytes[i/2] = ((byte)Character.digit(str.charAt(i),16))<<4)+(byte)Character.digit(str.charAt(i),16);
私はこのコードをテストしていません(私は気圧私と一緒にコンパイラを持っていない)が、私は私が通じアイデアを得たいと考えています。減算/加算は、単に「A」を数字10に、「B」を11に変換します。ビットシフト< < 4は、最初の16進数を正しい場所に移動します。
EDIT:少し考え直した後、正しい質問をしているかどうかわかりません。あなたは "DE"を{0xDE}に、あるいはおそらく{0x44,0x45}に変換しますか?後者はもっと便利です、前者は宿題問題のようなものです。
getBytes()は、プラットフォームエンコーディングの文字のバイト数を取得します。しかし、実際に表現されているバイト配列に16進表現のバイトを含むStringを変換したいと思うようです。 Convert a string representation of a hex dump to a byte array using Java?(注:私は個人的に哲学的な理由のうちのコモンズ・コーデックが、よりを使用するために第二の答えを好む)私は、この既存の質問に向かってあなたを指すことになり場合
2つの文字の各ペアを通じて
あなたは長い間に文字列を解析して、バイトを抽出することができます。
String s = "DEADBEEF";
long n = Long.decode("0x" + s); //note the use of auto(un)boxing here, for Java 1.4 or below, use Long.decode("0x" + s).longValue();
byte[] b = new byte[4];
b[0] = (byte)(n >> 24);
b[1] = (byte)(n >> 16);
b[2] = (byte)(n >> 8);
b[3] = (byte)n;
これはこの場合に機能しますが、一般的に16桁までの16進数(つまり8デコードされたバイト)の文字列に対してのみ有効です。 –
@Pauloですが、必要に応じて文字列を16文字のバッチに分割できます。 – Thomas
tskuzzyの答えは正しいかもしれません(テストしていない)が、できれば、私は、ApacheからCommons Codecを使用してお勧めします。それはあなたが必要なものを行うHex
クラスを持っています。
Googleはあなたの友だちです –
[Javaを使用して16進ダンプの文字列表現をバイト配列に変換する](http://stackoverflow.com/questions/140131/convert-a-string-representation-of-a)を参照してください。 -hex-dump-to-a-byte-array-using-java) – wjans
なぜ人々はAPIを使用しないのですか? :[ – mre