在java中将字符串数组元素转换为字节数组[重复]
Posted
技术标签:
【中文标题】在java中将字符串数组元素转换为字节数组[重复]【英文标题】:Cast string array elements to byte array in java [duplicate] 【发布时间】:2015-05-20 08:51:26 【问题描述】:我有一个形式的字符串数组:
String[] s = 0x22, 0xD2, 0x01
现在我必须将其转换为字节数组形式,例如:
byte[] bytes = (byte)0x22, (byte)0xD2, (byte)0x01
它可以在 c# 中单行完成,但如何在 Java 中完成,因为我必须将 bytes
数组附加到另一个相同类型和格式的数组中。
这里我已经包含了部分代码,因为我不能包含整个代码:
String sr = "22D201";
String[] s = sr.substring(0, 2),sr.substring(2, 4),sr.substring(4);
byte[] ret = new byte[](byte)0x2C, (byte)0x04, (byte)0x01, (byte)0x67, (byte)0x00, (byte)0x00, (byte)0x3D;
现在我必须将byte[] bytes
附加到byte[] ret
,但我不能因为数组是String[] s
的字符串形式。那么如何隐藏String[] s
,以便我可以将其添加到byte[] ret
。
【问题讨论】:
此String[] s = 0x22, 0xAC, 0xFF;
无效Java:“不兼容的类型:int 无法转换为字符串”。另外,AC
和 FF
对于一个字节来说太大了。
请edit您的问题并附上您的真实代码。
大家好,谢谢,我明白了。我使用了这种方法并且它正在工作。 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)); return data;
【参考方案1】:
您可以使用String.getBytes();
。
您还可以使用字节数组和指定的编码方案初始化String
:
String s = new String(new byte[] /* Bytes data. */, "UTF-8");
对于Strings
的数组,每个单独的String的字节数组因此可以如下处理:
for(final String s : lStrings)
byte[] lBytes = s.getBytes();
如果您想创建这些类型的连续数组,可以使用ByteArrayOutputStream
。
ByteArrayOutputStream b = new ByteArrayOutputStream();
for(final String s : lStrings)
b.write(s.getBytes());
final byte[] lTotalBytes = b.toByteArray();
/* Make sure all the bytes are written. */
b.flush();
/* Close the stream once we're finished. */
b.close();
【讨论】:
OP 询问String[]
(即使他没有),而不是String
。
感谢您的建议!希望现在已经修好了。以上是关于在java中将字符串数组元素转换为字节数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章