2010-07-11 11 views
4

Comment puis-je convertir un int en un octet * à un certain index dans un octet *?Comment mettre un int en octets * C#

Idéalement je voudrais avoir quelque chose comme:

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

Il fixerait la première partie du bit à Igm [4] et le reste dans igm [5]. Edit: Je me rends compte qu'il y a peut-être beaucoup de façons possibles de gérer cela, je cherche le moyen le plus efficace si possible.

Répondre

4

essayez ceci:

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

Une fois que vous vous rendez compte que vous pouvez utiliser l'arithmétique simple pointeur à l'index partout dans votre tableau d'octets, les choses deviennent beaucoup plus facile.

1

Le système de type en C# vous empêchera de le faire, comme vous l'avez peut-être remarqué. Cependant, vous pouvez lancer vos pointeurs pour être les types appropiate:

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

Vous devez casser votre int pour sizeof(int) nombre d'octets, puis régler manuellement ces éléments à votre octet * à index spécifiés.

Ce sera plus sûr car vous saurez quoi et où vous placez vos données.