Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将十六进制字符串转换为十六进制字符串字节数组_Java_Arrays_String_Hex_Byte - Fatal编程技术网

在Java中将十六进制字符串转换为十六进制字符串字节数组

在Java中将十六进制字符串转换为十六进制字符串字节数组,java,arrays,string,hex,byte,Java,Arrays,String,Hex,Byte,我很难将包含十六进制字符串表示的字符串转换为相应的十六进制字符串字节数组 我试过这个密码 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.digi

我很难将包含十六进制字符串表示的字符串转换为相应的十六进制字符串字节数组

我试过这个密码

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)) & 0xFF);
    }
    return data;
}
公共静态字节[]hexStringToByteArray(字符串s){
int len=s.length();
字节[]数据=新字节[len/2];
对于(int i=0;i我认为你的期望不太正确,但是

    String hex = "ff";
    Integer i = Integer.valueOf(hex, 16);
    System.out.println(i);
    Byte b = i.byteValue();
    System.out.println(b);
    System.out.println(Integer.toHexString(i));

FF
是用十六进制表示
-1
的字符串。你的问题没有意义。字节数组包含字节,而不是字符。字节是数字,从-127到128。表示它们的另一种方法是使用一对从0到F的字符:这称为十六进制表示。就像数字1一样000可以用1K表示为一个字符串。但1K仍然表示数字1000。@JBNizetI期望这样的是“FF0A”-->byte[]{FF,OA}@thrarry Wombat..这不是一个重复的问题,它将答案标记为返回“FF”为-1,但我期望它为“FF”-->byte[]{FF}是否可以创建字符串“FF”的字节数组而不是表示为“-1”。