将char十六进制数组转换为字节数组java

问题描述 投票:0回答:1

如何在Java中将十六进制的char数组转换为字节数组?出于安全原因,我不想将char数组转换为字符串。

java8中是否有用于此转换的内置库?

java arrays hex
1个回答
0
投票

没有单一的Java SE方法,但是使用Character.digit相当简单:

byte[] parse(char[] hex) {
    int len = hex.length;
    if (len % 2 != 0) {
        throw new IllegalArgumentException(
            "Even number of digits required");
    }

    byte[] bytes = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        int high = Character.digit(hex[i], 16);
        int low = Character.digit(hex[i + 1], 16);
        bytes[i / 2] = (byte) (high << 4 | low);
    }

    return bytes;
}
© www.soinside.com 2019 - 2024. All rights reserved.