2011-09-22 84 views
4

我有一個長的字節數組。我需要消除最初的16個字節。有沒有捷徑呢?如何修剪字節數組的幾個字節?

+2

最有效的解決辦法是離開陣列如果你關心的話,並且只需要索引16個額外的字節。 – Jon

+0

@Jon:我需要將新的縮短數組傳遞給另一個函數以供進一步處理 – NewBie

+1

@NewBie那麼,調整該函數以接受與數組不同的東西。實際上,在公共接口中使用數組非常令人沮喪(是的,.NET框架也是如此;這是一個錯誤)。 –

回答

12

這不是最有效的事情,但會做的伎倆:

// using System.Linq; 

long[] array = ...; 

long[] newArray = array.Skip(16).ToArray(); 
+0

我試過,但VS說'skip'不是數組的成員。爲什麼? – NewBie

+0

@NewBie因爲在文件的頂部沒有使用System.Linq。 SKip是一種擴展方法,不是數組的成員。實際的錯誤信息應該是這樣的:「...不是一個成員,並且找不到擴展方法,因爲它是第一個參數」 –

+0

哇,LINQ非常方便!謝謝。 – NewBie

5

退房Array.Copy
例如:

var array = //initialization 
int bytesToEliminate = 16; 
int newLength = array.Length - bytesToEliminate; //you may need to check if this positive 
var newArray = new byte[newLength]; 
Array.Copy(array, bytesToEliminate, newArray, 0, newLength); 
+0

我檢查過,並沒有消除前16個字節。 PLease幫助 – NewBie

+0

Array.Copy不會改變原始數組,但會創建一個副本。正確使用該副本將修剪前16個字節。 –

+0

@NewBie - 我做了一個更新,以一個簡短的例子來回答。無論如何,您應該閱讀MSDN文章以瞭解如何使用它。 –

相關問題