Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Mar 28 Oct 2014 - 10:51 | |
| Bon, je voulais faire un read_dword() pour me faciliter la tâche avec GM, sauf qu'en fait c'est relativement chaud sachant que GM retourne du décimal avec file_bin_read_byte() Du coup d'après ce que j'ai compris, un WORD en Big-Endian c'est par exemple : 00011001 00011000 (25 24) et que du coup quand on relie ça donne 0001100100011000 (6424), donc on peut pas du tout relier les 2 octets en décimal, à part convertir en binaire, relier et reconvertir en décimal... Sous GM ça me paraît d'autant plus lent puisqu'il faut pouvoir lire assez rapidement tout ça. (Un DWORD c'est 4 octets) Quel est le moyen le plus optimisé? - Solution a écrit:
- Trouvé, avec l'exemple du WORD c'est ça :
- Code:
-
(25<<8)|24 Pour un DWORD 00110011 11001110 11000111 00011001 (51 206 199 25) il faut donc faire - Code:
-
(51<<24)|(206<<16)|(199<<8)|25
Dernière édition par Soundii le Mar 28 Oct 2014 - 12:06, édité 2 fois |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Mar 28 Oct 2014 - 11:17 | |
| Non mais faut vraiment arrêter de vouloir convertir les nombres en binaire etc, en mémoire c'est du binaire, point barre :P
Donc si tu veux passer deux bytes en un word, tu fais juste b1 | (b2 << 8) ou (b1 << 8) | b2 (dépend de l'endianess). Fonctionne pareil pour un dword, or binaire et décalages. |
|
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Mar 28 Oct 2014 - 11:20 | |
| Ah tiens j'ai pas pensé aux opérateurs binaires de GM, à vrai dire je les ai jamais utilisés ^^ Je vais y jeter un oeil, merci |
|
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Mar 28 Oct 2014 - 12:04 | |
| Trouvé, avec l'exemple du WORD c'est ça : - Code:
-
(25<<8)|24 Pour un DWORD 00110011 11001110 11000111 00011001 (51 206 199 25) il faut donc faire - Code:
-
(51<<24)|(206<<16)|(199<<8)|25 , = 869189401 simple comme bonjour en fait o: Je sais pas s'il y a plus opti (mais je pense pas), mais ça remplit son job. Ton tutoriel est bien expliqué oni, merci bien, j'ai tout compris sur les opérateurs maintenant o/ |
|
Contenu sponsorisé
| Sujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal | |
| |
|