繁体   English   中英

Java:将字节列表转换为字节数组

[英]Java : convert List of Bytes to array of bytes

试图解决什么应该是一个简单的问题。 得到一个字节列表,想在函数末尾将它转换为字节数组。

final List<Byte> pdu = new ArrayList<Byte>();
....
return pdu.toArray(new byte[pdu.size()]);;

编译器不喜欢我的toArray上的语法。 如何解决这个问题?

编译器不喜欢它,因为byte[]不是Byte[]

你可以做的是使用commons-langArrayUtils.toPrimitive(wrapperCollection)

Byte[] bytes = pdu.toArray(new Byte[pdu.size()]);
return ArrayUtils.toPrimitive(bytes);

如果您不能使用 commons-lang,只需遍历数组并用值填充另一个byte[]类型的数组(它们将自动拆箱)

如果您可以使用Byte[]而不是byte[] - 就这样吧。

使用Guava的方法Bytes.toArray(Collection<Byte> collection)

List<Byte> list = ...
byte[] bytes = Bytes.toArray(list);

这使您不必执行 Commons Lang 等效项要求您自己进行的中间数组转换。

主要是,您不能将原始类型与toArray(T[])

请参阅: 如何在 Java 中将 List<Integer> 转换为 int[]? . 这与应用于整数的问题相同。

也试试美元检查这个修订版):

import static com.humaorie.dollar.Dollar.*
...

List<Byte> pdu = ...;
byte[] bytes = $(pdu).convert().toByteArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM