Вопрос

Как я могу преобразовать 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, а затем вручную устанавливаю эти детали в свой байт * при указанных индексах.

Это будет безопаснее, как вы узнаете, что и где вы размещаете свои данные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top