Domanda

Come posso convertire un int per un byte * in un determinato indice in un byte *?

Idealmente vorrei avere qualcosa del genere:

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

Imposterà la prima parte del bit su IGM [4] e il resto in IGM [5].

Modifica: mi rendo conto che ci possono essere molti modi possibili per gestire questo, sto cercando il modo più efficiente se possibile.

È stato utile?

Soluzione

Prova questo:

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

Una volta che ti rendi conto che puoi utilizzare il semplice puntatore aritmetico per indicizzare ovunque nella tua matrice di byte, le cose vengono molto più facili.

Altri suggerimenti

Il sistema di tipo in C # ti impedirà di farlo, come si potrebbe aver notato.Tuttavia, è possibile lanciare i tuoi puntatori per essere i tipi di appropriati:

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

È necessario interrompere il conteggio dell'int a sizeof(int) dei byte e quindi impostare manualmente queste parti sul tuo byte * a indici specificati.

Questo sarà più sicuro in quanto saprai cosa e dove effettui i tuoi dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top