字符串到字节数组类型转换[重复]
Posted
技术标签:
【中文标题】字符串到字节数组类型转换[重复]【英文标题】:String to byte array type conversion [duplicate] 【发布时间】:2014-08-30 15:31:10 【问题描述】:我想将字符串转换为字节数组,如下所示:
如果我有一个字符串:
String str = "0x61";
我希望它是:
byte[] byteArray = 0x61;
有什么想法吗?
【问题讨论】:
开头的“0x”是强制性的吗? 【参考方案1】:您是否在此处遗漏了部分信息?你描述的问题可以用一个简单的
byte[] byteArray = Byte.decode(str);
【讨论】:
【参考方案2】:如果我理解你的问题,那么你可以这样做 -
String str = "0x61";
byte[] arr = new byte[] (byte) Integer.parseInt(str.substring(2), 16);
System.out.println(arr[0] == 0x61);
输出是
true
【讨论】:
【参考方案3】:我真的不知道你想要达到什么目的。你能详细说明你的用例吗?
我相信你想要的是
str.getBytes();
看这里https://***.com/a/18571348/2163130
【讨论】:
【参考方案4】:如果您的字符串在每个数字前没有 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 个字节(十六进制格式)。
【讨论】:
【参考方案5】:步骤 1) 将十六进制转换为长整数 步骤 2) 将 long 转换为字节数组。
String str = "0x61";
long l = Long.valueOf(str).longValue(); //step 1
byte[] bytes = ByteBuffer.allocate(8).putLong(l).array(); //step 2
【讨论】:
以上是关于字符串到字节数组类型转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章