Comment en C pouvons-nous lire et faire DWORD
variables avec un mot bas et haut et un octet haut et bas?Variable DWORD avec mot bas/haut et octet bas/haut
Répondre
Dans Win32, un DWORD est un entier non signé de 32 bits. Dans d'autres contextes, cela pourrait éventuellement signifier autre chose.
Assuminng la définition Win32 (et d'autres typedefs Win32):
BYTE lsb = 0x11 :
BYTE next_lsb = 0x22 :
BYTE next_msb = 0x33 :
BYTE msb = 0x44 :
DWORD dword_from_bytes = (msb << 24) | (next_msb << 16) | (next_lsb << 8) | lsb ;
dword_from_bytes
aura la valeur 0x44332211
.
De même:
WORD lsw = 0x1111 :
WORD msw = 0x2222 :
DWORD dword_from_words = (msw << 16) | lsw ;
dword_from_words
aura la valeur 0x22221111
.
Pour extraire dire le troisième octet de dword_from_bytes
par exemple:
next_msb = (dword_from_bytes >> 16) & 0xff ;
bien que le & 0xff
est pas strictement nécessaire dans ce cas, étant donné le type de next_msb
, mais si le type du récepteur était supérieur à 8 bits , il va masquer les bits msb.
WinAPI fournit des macros pour les manipulations de ces types, tels que:
en outre vous avez les 'HIBYTE' et' LOBYTE' respectivement –
- 1. C#: Comment faire une méthode générique Type (octet/mot/dword)?
- 2. Problème C# avec octet []
- 3. la valeur du second octet d'une seule variable
- 4. Variable déclarée avec un mot clé variable dans sql plus (oracle 9i)?
- 5. octet [] à l'image android
- 6. variable mot de passe aléatoire disparaît
- 7. zlib de C++ vers C# (Comment convertir octet [] pour streamer et streamer vers octet [])
- 8. Cryptage avec DES et mot de passe
- 9. Combiner int et octet en long
- 10. Chaîne à octet [] et vice versa?
- 11. Test d'intégration avec Ruby et le mot clé attribs
- 12. convertir un octet en binaire
- 13. "avec" mot-clé dans javascript
- 14. VBA - Lire le fichier octet par octet sur le système avec les paramètres régionaux asiatiques
- 15. Conversion d'un octet en un octet de 7 bits
- 16. Conception de code octet?
- 17. Pourquoi octet b = (octet) 0xFF est égal à entier -1?
- 18. Expliquer ce code C#: octet * p = (octet *) (void *) Scan0;
- 19. Nom de variable pris par mot-clé - vos exemples?
- 20. C: Décompression d'un octet
- 21. octet [] au fichier wav
- 22. séparateur bytes.Split comme [] octet ("...")
- 23. Retirez Octet de NSMutableData
- 24. Octet à nombre entier en C#
- 25. Lire un octet d'Intptr
- 26. octet fourni pour BeginReceive
- 27. Octet efficace [] pour BitmapImage et vice versa conversion en C#
- 28. Bonjour mot avec JavaScript
- 29. javascript 'avec' mot réservé
- 30. nouvel octet en php
Maintenant, il commence à avoir un sens. Mais que signifient réellement les '<<', '>>' et '|'? Merci! – Midas
Il est préférable d'utiliser les macros dédiées, telles que "HIWORD", "LOWORD", "MAKELONG" et etc. Parce que les processeurs différents utilisent des ordres de byte différents (petit/grand endian et etc.) – valdo
Eh bien, tant pis. J'ai lu les docs sur les opérateurs bit à bit et je comprends comment cela fonctionne maintenant! – Midas