2013-06-02 88 views
0

我在嘗試將多個字節數組添加到一個時遇到問題。我不是在說這裏連接。我需要添加Byte []的單個項目。這是我正在尋找的。將多個字節[]添加到Java中的一個數組中

byte[] one = [4,5,6]; 
    byte[] two = [1,2,1]; 

結果應該是

byte[] sum = [5,7,7]; 

這只是一個簡單的例子。我正在編寫我自己的算法來在android中混合不同的pcm錄音。這是我堅持的地方。任何幫助將非常感激。

UPDATE:

這裏是我的代碼片段:

while(stream[1].read()!=-1) { 
List<byte[]> arrayColl = new ArrayList<byte[]>(); 
for(int i =0; i<recfiles.length; i++) { 
stream[i].read(buffer); 
arrayColl.add(buffer); 
} 
} 

可以有基於用戶選擇的多個數據流。上面的循環將讀取緩衝區中的多個流,並將該緩衝區添加到ArrayList。現在我需要做的是以上面提到的方式混合arraylist中的字節。 buffer是一個byte[]

回答

0

你在找什麼是一個簡單的matrix addition

int length = Math.min(one.length, two.length); 
byte[] sum = new byte[length]; 
for (int i = 0; i<length; i++) { 
    sum[i] = one[i] + two[i]; 
} 

另外,如果你想確保兩個:您可以通過循環迴路的下標操作者的域(即從0到數組的長度)如下用for循環做到這一點數組是相同的尺寸,可以使用:

if (one.length != two.length) { 
    throw new IllegalArgumentException("unequal lengths"); 
} 
int length = one.length; // or two.length 
byte[] sum = new byte[length]; 
for (int i = 0; i<length; i++) { 
    sum[i] = one[i] + two[i]; 
} 
+0

嗨WChargin,感謝您的快速響應。看起來這是完全正確的。我還需要一個建議。我正在處理的算法根據用戶選擇混合多個文件。我們怎樣才能調整這個功能,以使用多個字節[]而不僅僅是兩個。 – Peshal

+0

你的意思是使用多個byte []是什麼意思?你能舉個例子嗎? – wchargin

+0

嗨WChargin,我已經添加了一個代碼片段,它會給你我想要做的事情的圖片。 – Peshal

1

要添加多個字節數組,就需要通過每個一個環,將所述結果提供給累加器陣列:

public byte[] sum(byte[]... arrays) { 
    // optional: check that arrays.length > 0 (at least one array was passed) 
    final int len = arrays[0].length; 
    final byte[] result = new byte[len]; 
    for (byte[] array : arrays) { 
     // optional: test that array has length len 
     for (int i = 0; i < len; ++i) { 
      result[i] += array[i]; 
     } 
    } 
    return result; 
} 
+0

謝謝泰德!有了這兩個答案。我應該可以解決我的問題。 – Peshal

相關問題