我想将字符串转换为字节数组,如下所示:
如果我有一个字符串:
String str = "0x61";
我想要它:
byte[] byteArray = {0x61};
有什么想法吗?
答案 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();
答案 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