[英]How to aggregate two Strings and a List<byte[]> into a single byte[] and then extract them
[英]List<byte[]> to single byte[]
List<byte[]> listOfByteArrays;
我希望通過附加List
所有元素,將此List
存儲的所有byte[]
只包含一個byte[]
。 我知道一種方法,這是通過使用System.arrayCopy()
但在循環內使用它將是一個有點凌亂(temporary variables and byte[] arrays)
。 試圖找到一種更好的方法,但不能。 有什么指針嗎? 我可以使用任何外部API嗎?
嘗試使用ByteArrayOutputStream
:
ByteArrayOutputStream out= new ByteArrayOutputStream( );
在循環中
out.write(eachBytearray);
循環之后
byte result[] = out.toByteArray( );
你為什么需要臨時數組?
System.arraycopy
將列表中的數組復制到目標數組中的適當位置。 (顯然,你需要跟蹤目標數組中的偏移量。) 與番石榴單線 :
Bytes.concat(listOfByteArray.toArray(new byte[0][]));
或更長一點(備用一個字節數組分配,發生在較短版本的toArray
中)
Bytes.concat(listOfByteArray.toArray(new byte[listOfByteArray.size()][]));
這很容易從頭開始寫:
int length = 0;
for (byte[] ba : listOfByteArrays) {
length += ba.length
}
byte[] total = new byte[length];
int index = 0;
for (byte[] ba : listOfByteArrays) {
for (byte b : ba) {
total[index++] = b;
}
}
total
是所需的字節數組。
我會循環列表並總結列表中數組的長度。 創建一個包含所有內容的byte []。 使用System.arrayCopy()循環並復制到適當的索引中。
我不認為第三方圖書館的保證不僅僅是你所描述的內容。
你似乎知道如何編碼,所以我將省略示例代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.