J'ai un System.Array
de types struct de valeur, quelque chose comme ceci:Comment convertir un tableau de valeur struct en octets?
public value struct Position
{
int timestamp;
float x;
float y;
}
Position[] positions = new Position[1000 * 1000];
Après avoir initialiser le tableau avec des valeurs, comment puis-je obtenir un byte[]
de son contenu, sans sérialisation un élément à la fois?
En C++/CLI, j'utiliserais un pin_ptr
pour obtenir le pointeur sur le contenu du tableau et je copierais les données à partir de là. Puis-je faire quelque chose comme ça en C#?
EDIT: J'ai besoin d'écrire les données brutes sur le disque, comme s'il s'agissait d'une structure C, sans aucun type de sérialisation. J'ai marqué cette question en tant que C# pour une exposition plus large, mais en fait j'essaie de sérialiser les données de IronPython, donc cela signifie que je ne peux pas utiliser la fonctionnalité unsafe
C#.
Le 'Convert.GetBytes()' ne fonctionne-t-il pas? – Default
Dupliquer: http://stackoverflow.com/questions/1068541/how-to-convert-a-value-type-to-byte-in-c – Kugel
@Default: si vous faites référence à 'BitConverter.GetBytes', non ça ne marche pas. Il renvoie un 'byte []' avec un seul octet à l'intérieur – Meh