在Java中分配给字节数组

fre*_*ley 5 java arrays variable-assignment

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

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

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

Gus*_*uss 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());
Run Code Online (Sandbox Code Playgroud)

尽管使用类似一个ByteArrayOutputStream或一个ByteBuffer类似建议的其他人可能是一个更简洁的方法,将是从长远来看,为您更好的:-)

  • 这可能比使用库类更直接的操作更简单.一个注释是`(0xFF&...)`操作在转到一个字节时是完全冗余的.`(byte)`cast以相同的方式截断.只有当你回到你关心的整数时才会这样. (2认同)