1

重複の可能性:
Javaを使用して16進ダンプの文字列表現をバイト配列に変換しますか?

MD5ストリングを入手しました

de70d4de8c47385536c8e08348032c3b

そして私はそれをバイト値として必要とします

DE 70 D4 DE 8C 47 38 55 36 C8 E0 83 48 03 2C 3B

pack("H32);これはPerls関数に似ているはずです。

4

4 に答える 4

3

Apache Commons Codec Hex.decodeHex()をご覧ください。

于 2012-05-28T13:59:35.993 に答える
2

をループし、関数をString使用Byte.decode(String)してバイト配列を埋めます。

于 2012-05-28T13:57:17.137 に答える
1

未確認:

String md5 = "de70d4de8c47385536c8e08348032c3b";
byte[] bArray = new byte[md5.length() / 2];
for(int i = 0, k = 0; i < md5.lenth(); i += 2, k++) {
    bArray[k] = (byte) Integer.parseInt(md5[i] + md5[i+1], 16);
}
于 2012-05-28T14:00:40.800 に答える
1

これを行うには多くの方法があります。これが1つです:

public static void main(String[] args) {

    String s = "de70d4de8c47385536c8e08348032c3b";

    Matcher m = Pattern.compile("..").matcher(s);

    List<Byte> bytes = new ArrayList<Byte>();
    while (m.find())
        bytes.add((byte) Integer.parseInt(m.group(), 16));

    System.out.println(bytes);
}

出力(-34== 0xde):

[-34, 112, -44, -34, -116, 71, 56, 85, 54, -56, -32, -125, 72, 3, 44, 59]
于 2012-05-28T14:06:55.273 に答える