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

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

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

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

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如果未知参数是安全的,请随时通过或例外添加参数检查。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5490000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存