我认为以下解决方案比迄今为止发布的解决方案更好:
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如果未知参数是安全的,请随时通过或例外添加参数检查。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)