AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -29%
PC portable Gamer ERAZER DEPUTY P60 – ...
Voir le deal
999.99 €

 

 [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal

Aller en bas 
2 participants
AuteurMessage
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Empty
MessageSujet: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal   [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal EmptyMar 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() Yum!

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

_________________
‎<‎Cysteine‎>‎ nON mais la touche maj s'active/se désactive toute seule
‎<‎Cysteine‎>‎ et a du mal à réponDRE QUANd j'appuie dessus
‎<‎Cysteine‎>‎ et je l'ai démont2? IL Ny a rien DEDANs


Dernière édition par Soundii le Mar 28 Oct 2014 - 12:06, édité 2 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9178
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Empty
MessageSujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal   [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal EmptyMar 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.

_________________
[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Runningpotato1[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal TvF6GED [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal MdetltS
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Empty
MessageSujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal   [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal EmptyMar 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

_________________
‎<‎Cysteine‎>‎ nON mais la touche maj s'active/se désactive toute seule
‎<‎Cysteine‎>‎ et a du mal à réponDRE QUANd j'appuie dessus
‎<‎Cysteine‎>‎ et je l'ai démont2? IL Ny a rien DEDANs
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Empty
MessageSujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal   [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal EmptyMar 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/

_________________
‎<‎Cysteine‎>‎ nON mais la touche maj s'active/se désactive toute seule
‎<‎Cysteine‎>‎ et a du mal à réponDRE QUANd j'appuie dessus
‎<‎Cysteine‎>‎ et je l'ai démont2? IL Ny a rien DEDANs
Revenir en haut Aller en bas
Contenu sponsorisé





[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Empty
MessageSujet: Re: [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal   [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal Empty

Revenir en haut Aller en bas
 
[Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: