gpt4 book ai didi

java - 使用Java将十六进制转储的字符串表示形式转换为字节数组?

转载 作者:行者123 更新时间:2023-12-01 22:35:04 24 4
gpt4 key购买 nike

我正在寻找一种方法来转换长字符串(从转储),该字符串将十六进制值转换为字节数组。

我的口头表达不如发布the same question here的人更好。

但是为了保持其原始性,我将以自己的方式来表述:假设我有一个字符串"00A0BF",我想将其解释为

byte[] {0x00,0xA0,0xBf}


我该怎么办?

我是Java新手,最终使用 BigInteger并注意前导十六进制零。但是我认为这很丑陋,并且我肯定我缺少一些简单的东西。

最佳答案

我认为以下解决方案比迄今为止发布的解决方案更好:

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;
}


改进的原因:


前导零(与BigInteger不同)和负字节值(与Byte.parseByte不同)是安全的
不会将String转换为 char[],也不会为每个字节创建StringBuilder和String对象。
没有可能不可用的库依赖项


可以通过 assert随意添加参数检查,如果未知该参数是安全的,则可以添加异常。

关于java - 使用Java将十六进制转储的字符串表示形式转换为字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58530147/

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