Получить байты из функции массива в VB.NET - PullRequest
1 голос
/ 05 января 2010

Мне нужно получить байты из массива байтов, начиная с определенного индекса и определенной длины (4). Как я могу получить это?

Примечание: я не хочу использовать подпрограмму Array.copy, поскольку она не является функцией. Мне нужно поместить это в что-то вроде Sub MySub( [аргумент как byte ()] the_function_I_Need(Array, index, length)).

Ответы [ 2 ]

3 голосов
/ 05 января 2010

Что-то вроде:

Dim portion As Byte() = New Byte(length - 1) {}
Array.Copy(originalArray, index, portion, 0, length)

"- 1" из-за того, что VB принимает индекс последнего элемента, а не размер.

РЕДАКТИРОВАТЬ: я пропустил немного о нежелании использовать Array.Copy. (Было ли это там, когда я опубликовал ответ, или вы редактировали его в течение пятиминутного «льготного периода»?)

Просто оберните это в метод, если вам действительно нужно. Хотя есть альтернативы, использующие LINQ и т. Д., Это будет наиболее эффективный способ сделать это, если вы действительно хотите новый массив.

Существует также ArraySegment(Of T), если вы готовы использовать оболочку для существующего массива - но это не одно и то же.

0 голосов
/ 05 января 2010
Private Function the_function_you_need(ByVal arr As Byte(), ByVal ix As Integer, _
    ByVal len As Integer) As Byte()

    Dim arr2 As Byte() = New Byte(len - 1)
    Array.Copy(arr, ix, arr2, 0, len)
    Return arr2

End Function
...