Копирование значений в байтовый массив с определенным смещением в безопасном контексте - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь скопировать значение uint в байтовый массив в C #.Мне удалось сделать это с помощью кода в небезопасном контексте, но в идеале я хотел бы сделать это в безопасном контексте

Код, который я сейчас использую, это

var bytes = new byte[] {0x68, 0x00, 0x00, 0x00, 0x00}

fixed (byte* bytesPointer = bytes )
{
    *(ulong*)(bytesPointer + 1) = value;
}

Эквивалентто, что я пытаюсь выполнить в C #, можно сделать так в C ++

unsigned char bytes[] = {0x68, 0x00, 0x00, 0x00, 0x00}

memcpy(((unsigned long)bytes + 1), value, 4);

Как я могу сделать это в безопасном контексте в C #?

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете использовать эти

Array.Copy (Array, Int32, Array, Int32, Int32)

Копирует диапазон элементов из массиваначиная с указанного исходного индекса и вставляет их в другой массив, начиная с указанного конечного индекса.Длина и индексы указываются как 32-битные целые числа.

Buffer.BlockCopy (Array, Int32, Array, Int32, Int32) Метод

Копирует указанное количество байтов из исходного массива, начинающегося с определенного смещения, в целевой массив, начинающийся с определенного смещения.

...