Pergunta

Como posso converter um int em um byte* em um determinado índice em um byte*?

Idealmente, eu gostaria de ter algo como:

unsafe{
    byte* igm=stackalloc byte[8];
    igm[4]=4283;
}

Ele definiria a primeira parte do bit como igm[4] e o restante como igm[5].

Editar:Sei que pode haver muitas maneiras possíveis de lidar com isso. Estou procurando a maneira mais eficiente, se possível.

Foi útil?

Solução

tente isto:

unsafe
{
    byte* igm = stackalloc byte[8];
    *(int*)(igm + 4) = 4283;
}

Depois que você perceber que pode usar aritmética de ponteiro simples para indexar qualquer lugar em sua matriz de bytes, as coisas ficarão MUITO mais fáceis.

Outras dicas

O sistema de tipos em C# impedirá que você faça isso, como você deve ter notado.No entanto, você pode definir seus ponteiros para os tipos apropriados:

    unsafe
    {
        byte* igm = stackalloc byte[8];
        int* intPtr = (int*)igm;
        intPtr[1] = 4283;
    }

Você precisa quebrar seu int para sizeof(int) contagem de bytes e, em seguida, defina manualmente essas partes para seu byte* em índices especificados.

Isso será mais seguro, pois você saberá O QUE e ONDE coloca seus dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top