Pregunta

¿Cómo puedo convertir un int a un byte* en un determinado índice en un byte*?

Idealmente me gustaría tener algo como:

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

Establecería la primera parte del bit en igm[4] y el resto en igm[5].

Editar:Me doy cuenta de que puede haber muchas formas posibles de manejar esto, estoy buscando la forma más eficiente si es posible.

¿Fue útil?

Solución

Intenta esto:

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

Una vez que se dé cuenta de que puede usar una aritmética de puntero simple para indexar en cualquier lugar de su matriz de bytes, las cosas se vuelven mucho más fáciles.

Otros consejos

El sistema de tipo en C # le impedirá que lo haga, como podría haber notado.Sin embargo, puede emitir sus punteros para ser los tipos de APROPIADOS:

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

Necesitas romper tu int para sizeof(int) recuento de bytes y luego configure manualmente estas partes en su byte* en índices específicos.

Esto será más seguro ya que sabrá QUÉ y DÓNDE coloca sus datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top