gpt4 book ai didi

java - 在 Java 中,如何将十六进制字符串转换为字节 []?

转载 作者:IT老高 更新时间:2023-10-28 20:56:23 26 4
gpt4 key购买 nike

我在 Java 中使用以下函数将加密的字符串转换为十六进制格式:

public static String toHex(byte [] buf) {
StringBuffer strbuf = new StringBuffer(buf.length * 2);
int i;
for (i = 0; i < buf.length; i++) {
if (((int) buf[i] & 0xff) < 0x10) {
strbuf.append("0");
}
strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
}
return strbuf.toString();
}

现在我想将该十六进制字符串转换回字节数组。我该怎么做?

例如,

(1) Plain Text = 123
(2) Encrypted Text = «h>kq*«¬Mí“~èåZ \}?
(3) Encrypted Text in Hex = f263575e7b00a977a8e9a37e08b9c215feb9bfb2f992b2b8f11e

我可以从 (2) 转到 (3),但我如何从 (3) 转到 (2)?

最佳答案

接受的答案不考虑可能导致问题的前导零

This question回答它。取决于您是想看看它是如何完成的,还是只使用 java 内置方法。以下是从 this 复制的解决方案和 this分别来自提到的 SO 问题的答案。

选项 1:Util 方法

public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}

选项 2:单线内置

import javax.xml.bind.DatatypeConverter;

public static String toHexString(byte[] array) {
return DatatypeConverter.printHexBinary(array);
}

public static byte[] toByteArray(String s) {
return DatatypeConverter.parseHexBinary(s);
}

关于java - 在 Java 中,如何将十六进制字符串转换为字节 []?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com