字符串到字节数组类型转换

时间:2014-07-09 14:31:58

标签: java android string bytearray

我想将字符串转换为字节数组,如下所示:

如果我有一个字符串:

String str = "0x61";

我想要它:

byte[] byteArray = {0x61};

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

您是否遗漏了部分信息?您描述的问题可以通过简单的

完成
byte[] byteArray = {Byte.decode(str)};

答案 1 :(得分:1)

如果我理解你的问题,那么你可以做 -

String str = "0x61";
byte[] arr = new byte[] {(byte) Integer.parseInt(str.substring(2), 16)};
System.out.println(arr[0] == 0x61);

输出

true

答案 2 :(得分:1)

我真的不知道你想要实现的目标。你能详细说明你的用例吗?

我相信你想要的是

str.getBytes();

看这里https://stackoverflow.com/a/18571348/2163130

答案 3 :(得分:0)

如果你的字符串在每个数字之前没有0x,那么这个方法将执行转换:

private byte[] generateByteArray(String byteArrayStr)
    {
        byte[] result = new byte[byteArrayStr.length() / 2];
        for (int i = 0; i < byteArrayStr.length(); i += 2)
        {       
            result[i / 2] = (byte)((Character.digit(byteArrayStr.charAt(i), 16) << 4) + Character.digit(byteArrayStr.charAt(i + 1), 16));               
        }

        return result;
    }

此方法会将“FF00”转换为{255,0}

您需要确保String的长度是偶数,因为每2位数将构成1个字节(十六进制格式)。

答案 4 :(得分:0)

步骤1)将十六进制转换为long 步骤2)将长数组转换为字节数组。

String str = "0x61";    
long l = Long.valueOf(str).longValue(); //step 1
byte[] bytes = ByteBuffer.allocate(8).putLong(l).array(); //step 2