Как установить INT байт * C #
-
13-09-2020 - |
Вопрос
Как я могу преобразовать int байт * в определенный индекс в байте *?
В идеале я бы хотел иметь что-то вроде:
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
.
Это установило бы первую часть бита к IGM [4] и остальным в IGM [5].
Редактировать: Я понимаю, что может быть много возможных способов справиться с этим, я ищу наиболее эффективный способ по возможности.
Решение
Попробуйте:
unsafe
{
byte* igm = stackalloc byte[8];
*(int*)(igm + 4) = 4283;
}
.
Как только вы поймете, что вы можете использовать простой указатель арифметики для индекса в любом месте вашего байтового массива, все становится намного проще.
Другие советы
Система типа в C # помешает вам делать это, как вы могли бы заметить.Тем не менее, вы можете отбросить свои указатели на соответствующие типы:
unsafe
{
byte* igm = stackalloc byte[8];
int* intPtr = (int*)igm;
intPtr[1] = 4283;
}
. Вам нужно разбить свой int для sizeof(int)
Count of Bytes, а затем вручную устанавливаю эти детали в свой байт * при указанных индексах.
Это будет безопаснее, как вы узнаете, что и где вы размещаете свои данные.