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;
    }