Come impostare un int a byte * c #
-
13-09-2020 - |
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.
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.