【问题标题】:Cast string array elements to byte array in java [duplicate]在java中将字符串数组元素转换为字节数组[重复]
【发布时间】: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; }

标签: java arrays


【解决方案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
  • 感谢您的建议!希望现在已经修好了。
猜你喜欢
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2013-12-19
  • 2011-07-26
相关资源
最近更新 更多