我正在寻找一个简单的方法,我可以传递一些字节,如varargs,并返回一个byte [],如:
static byte[] byteArray(byte ...bytes){ return bytes;}
到目前为止我发现了......
java.lang.Byte
没有它
java.util.Arrays
没有它
com.google.common.primitives.Bytes.toArray(..)
想要一个集合
示例用例:assertThat(actualArray,is(byteArray(1,2,3,4,5)));
答案 0 :(得分:6)
没有任何功能,因为
new byte[]{1,2,3,4,5}
也很短。
修改强> 请注意任何这样的帮助方法
static byte[] toBytes(byte ... bytes)
{
return bytes;
}
与new byte{...}
具有相同的问题:所有参数必须是实际字节,不会传播到int
。因此,0xca
之类的参数必须在{2}中投放到byte
:
byte ba1[] = new byte[]{ (byte)0xca };
byte ba2[] = toBytes( (byte)0xca );
如果您想要更简单的输入,那么您必须编写一个自定义方法,该方法分配一个字节数组并手动执行复制和转换。
答案 1 :(得分:0)
如果您将字节分配给byte[]
类型的变量或字段,则可以比new byte[]{1, 2, 3, 4}
更紧凑地编写:
byte[] bytes = {1, 2, 3, 4};
此外,0xca, 0xfe, 0xba, 0xbe
的问题是所有这些值实际上都超出了Java byte
的合法范围,因为Java中的byte
是签名的默认情况下。
也许你想要一个方法,它接受long...
类型的参数并返回byte[]
,使用UnsignedBytes.checkedCast或UnsignedBytes.saturatedCast来转换每个值。