Conversion Byte[] vers structure avec Big-endian
Bonjour à tous, j'espère ne pas me tromper sur la catégorie du forum pour ma question :P
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:
1 2 3 4 5 6 7 8 9 10
|
[StructLayout(LayoutKind.Explicit, CharSet = CharSet.Ansi)]
public struct FileTypeCompatibility
{
[FieldOffset(0)]
public int AtomSize;
} |