c#) Как обращаться к содержимому массива байтов размером 1 МБ, не копируя новый массив - PullRequest
0 голосов
/ 06 августа 2020

Как обращаться к содержимому массива байтов размером 1 МБ, не копируя новый массив.

Я искал некоторую функцию вроде [ArraySegment].

Но он поддерживает только тип int в качестве смещения.

Мне нужно использовать длинный тип как смещение.

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Это то, для чего был изобретен Span<byte>, хотя он был введен только в netstardard 2.1.

Если вы не можете его использовать, тогда вам нужно передать ссылку на массив, смещение и длина. Хотя вы можете создать свой собственный тип Span.

0 голосов
/ 06 августа 2020

Я не уверен, что понимаю вопрос, но, возможно, вы ищете следующие методы:

    public static void BaSetLong(byte[] byteArray, int longOffset, long value) {
        int start = longOffset * 8;
        byte[] array = BitConverter.GetBytes(value);
        for (int i = 0; i < 8; i++) byteArray[start + i] = array[i];
    }

    public static long BaGetLong(byte[] byteArray, int longOffset) {
        int start = longOffset * 8;
        return BitConverter.ToInt64(byteArray, start);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...