【发布时间】:2014-08-30 15:31:10
【问题描述】:
我想将字符串转换为字节数组,如下所示:
如果我有一个字符串:
String str = "0x61";
我希望它是:
byte[] byteArray = {0x61};
有什么想法吗?
【问题讨论】:
-
开头的“0x”是强制性的吗?
标签: java android string bytearray
我想将字符串转换为字节数组,如下所示:
如果我有一个字符串:
String str = "0x61";
我希望它是:
byte[] byteArray = {0x61};
有什么想法吗?
【问题讨论】:
标签: java android string bytearray
您是否在此处遗漏了部分信息?你描述的问题可以用一个简单的
byte[] byteArray = {Byte.decode(str)};
【讨论】:
如果我理解你的问题,那么你可以这样做 -
String str = "0x61";
byte[] arr = new byte[] {(byte) Integer.parseInt(str.substring(2), 16)};
System.out.println(arr[0] == 0x61);
输出是
true
【讨论】:
我真的不知道你想要达到什么目的。你能详细说明你的用例吗?
我相信你想要的是
str.getBytes();
【讨论】:
如果您的字符串在每个数字前没有 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}
您需要确保字符串的长度是偶数,因为每 2 位数字将构成 1 个字节(十六进制格式)。
【讨论】:
步骤 1) 将十六进制转换为长整数 步骤 2) 将 long 转换为字节数组。
String str = "0x61";
long l = Long.valueOf(str).longValue(); //step 1
byte[] bytes = ByteBuffer.allocate(8).putLong(l).array(); //step 2
【讨论】: