时间:2011-01-06 19:52:30

标签: java arrays variable-assignment

我想要分配一个字节数组,如下所示:

  • 第一个字节指定字符串的长度:(byte)string.length()
  • 2nd - 最后一个字节包含来自string.getBytes()
  • 的字符串数据

除了使用for循环之外,还有一种使用来自两个不同变量的字节初始化字节数组的快捷方法吗?

4 个答案:

答案 0 :(得分:6)

您可以使用System.arrayCopy()复制字节:

String x = "xx";
byte[] out = new byte[x.getBytes().length()+1];
out[0] = (byte) (0xFF & x.getBytes().length());
System.arraycopy(x.getBytes(), 0, out, 1, x.length());

尽管像其他人一样使用像ByteArrayOutputStreamByteBuffer这样的东西可能是一种更清洁的方法,从长远来看会更好: - )

答案 1 :(得分:2)

答案 2 :(得分:2)

虽然ByteBuffer通常是构建字节数组的最佳方法,但考虑到OP的目标,我认为以下内容会更强大:

public static void main(String[] argv)
throws Exception
{
   String s = "any string up to 64k long";

   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   DataOutputStream out = new DataOutputStream(bos);
   out.writeUTF(s);
   out.close();

   byte[] bytes = bos.toByteArray();

   ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
   DataInputStream in = new DataInputStream(bis);

   String s2 = in.readUTF();
}

答案 3 :(得分:0)