Bonjour à tous,
je sèche devant un problème en apparence simple: comment fabriquer un nombre sur 16bits, signé, avec 1 chiffre après la virgule au format big endian à partir dun réel dans Delphi ?
Merci d'avance pour votre aide,
Robert
Bonjour à tous,
je sèche devant un problème en apparence simple: comment fabriquer un nombre sur 16bits, signé, avec 1 chiffre après la virgule au format big endian à partir dun réel dans Delphi ?
Merci d'avance pour votre aide,
Robert
bonjour
en clair, pour transformer un réel sur 32 bit en un nombre sur 16 bit , il va falloir faire de grosses concessions surtout si l'on veut conserver un chiffre après la virgule.
Le plus simple me il semble est de stocker un entier qui sera divisé par 10 à l'utilisation (nombres limités de 3276.8 à -3276.7).
- conversion du type: mavar (: integer) := int(LeReel * 10)
Ensuite pour s'assurer que l'enregistrement se fasse bien en Big Endian (octet de poid fort en premier), il est préférable d'enregistrer le résultat dans un tableau de type byte.
- tableau[0] := mavar div 256
- tableau[1] := mavar mod 256
Enregistrer dans un fichier binaire par
- BlockWrite(NomFichier, tableau, SizeOf(tableau), Numtableau);
ou d'utiliser Swap qui échange les octets de poids fort et faible
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager