Bonjour à tous, j'espère ne pas me tromper sur la catégorie du forum pour ma question
Je souhaitais savoir comment est il possible de coder en c# ma structure chargée de récupérer des données brutes en byte[] sachant que toutes les données brutes sont stockées avec l'ordonnancement Big-Endian byte ordering...
Par exemple le premier champs AtomSize contenu 4 bytes, pourait avoir la valeur suivante en hexa:
00 00 00 20
Normalement en Big-Endian le poids le plus faible est mis en dernière position, on aurait donc la valeur décimale suivante:
AtomeSize = 2 * 16 + 0 * 1 = 32
Hors en C# l'ordonnancement des bytes serait Little-Endian.
C'est l'inverse avec le poids le plus fort en dernier....
En conséquence j'ai comme résultat non souhaité (représenté ici sous la forme big-endian pour éviter la confusion) :
20 00 00 00 soit 536870912 en décimal au lieu de 32 attendu!
Comment à l'aide d'attribut sur la struct préciser qu'elle ne contiendra que des données au format big-endian?
Merci beaucoup pour toute aide.
IRNBRU
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Ansi)] public struct FileTypeCompatibility { [FieldOffset(0)] public int AtomSize; }
Partager