在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 无法转换为字符串”。另外,ACFF 对于一个字节来说太大了。 请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中将字符串数组元素转换为字节数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Go中将字节数组转换为字符串[重复]

在此算法中将字节数组转换为字符串时出错[重复]

如何在java中将字节数组转换为hexString? [复制]

如何在Java中将二维布尔数组转换为一维字节数组?

如何在c ++中将int数组转换为字节数组[重复]

如何在 ios 中将 Base64 编码的 NSString 转换为字节数组(Java)?