十六进制到字节、ruby和java

十六进制到字节、ruby和java,java,ruby,byte,c,Java,Ruby,Byte,C,我有以下代码可以在Java中将十六进制字符串转换为字节: String s = "longhex"; 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

我有以下代码可以在Java中将十六进制字符串转换为字节:

String s = "longhex";
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));
}
String s=“longhex”;
int len=s.length();
字节[]数据=新字节[(len/2)];
对于(int i=0;i数据[i/2]=(字节)((Character.digit(s.charAt(i),16)不正确。
我在运行java代码时出错,线程“main”中出现异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:7因为实际字符串较长
43CFDE6A0996A389CD2DF5A2C5BD680D44FF7753644464446F96621719C4DC3F6B88FF61304AC4856E04403E0D1DF446E79592C80352ED06C262A3A1F75BAE47
所以,您想将十六进制字符串转换为十进制字节,对吗?@Mohanraj,是的,对了需要编辑一点
s.scan(/.{1}/)。每个切片(2)。映射{f,l}(整数(f,16)@IlyaCherevkov谢谢,我已经相应地更新了答案。
s = "longhex"
bytes = []
(0..s.length / 2 - 1).step(2).each do |i|
   bytes[i / 2] = s[i].ord << 4 + s[i + 1].ord
end
 str.codepoints.
     each_slice(2).
     map { |f, l| (f << 4) + l }
str.scan(/.{1}/).
    each_slice(2).
    map { |f, l| (Integer(f,16) << 4) + Integer(l,16) }