在java和python中将hexstring转换为字节数组

在java和python中将hexstring转换为字节数组,java,python,Java,Python,下面是我尝试用java和python进行转换的示例代码。我对这个概念还不熟悉。为什么我会得到不同的价值?如何获得与python中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) {

下面是我尝试用java和python进行转换的示例代码。我对这个概念还不熟悉。为什么我会得到不同的价值?如何获得与python中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;
    }
output :[B@57829d67
In python I tried:
test = bytearray.fromhex("4BE7C580")
output : bytearray(b'K\xe7\xc5\x80')
公共静态字节[]hexStringToByteArray(字符串s){
int len=s.length();
字节[]数据=新字节[len/2];
对于(int i=0;i
public static void main(String[] args) {
    byte[] array = hexStringToByteArray("4BE7C580");
    System.err.println(Arrays.toString(array));
    for (byte b : array) {
        System.err.println(Integer.toHexString(b & 0xff));
    }
}

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

您是否尝试用Java打印数组?您必须打印每个元素,否则它只会给出数据类型和内存地址。@SamCraig yes i Did.Java out是错误的!十六进制字符串已经包含字节值,从结尾到开头,字节值是两个字符。(如果项目是每长度一位数字,则加零)我不明白那个函数是什么。
[75, -25, -59, -128]
4b
e7
c5
80