convertion binaire en hexadecimal "" bintohex ""
Bonjour à toutes et tous, j'essaie de trouver des infos pour réaliser une conversion d'un chiffre binaire en hexadécimal,
objectif de mon petit programme: 4 x edit.text un pour donnée la valeur de départ un second pour recevoir la multiplication de ma valeur par 2048, le troisième pour recevoir ma conversion en binaire et le quatrième pour recevoir ma conversion en hexadécimal, je réussi a convertir en binaire ma valeur de départ mais sans virgule mais en valeur ronde ça fonctionne, je n'arrive pas du tout a convertir en hexadécimal déjà dans un premier temps et après je vais devoir retourner les octets par poids
j'ai déjà fait cela qui mériterait une grosse amélioration bien sur, pouvez vous m'aider svp merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| procedure TForm1.SpeedButton2Click(Sender: TObject);
var
s,t: single;
b : integer;
begin
s:= strtofloat (edit3.Text);
t:=(s * 2048);
edit5.Text:=floattostr(t) ; // ça fonctionne reçois avec virgule
//// peut être un round ? /////////////////////////////////////////////
b:= strtoint (edit5.text);
edit6.Text:= DeciToBin (b); // ça fonctionne mai pas avec virgule puffff ?
//////////////////////////////////////////////
// convertir edit6 en exadecimal dans edit7
// trouver dechex ou dec2hex
Edit7.Text := StrToHexStr (Edit6.Text);
////////////////////////////////////////
//retourné hexadécimal par poids ? rien trouvé sur les forums ?
end; |
nombre flotant en binaire
bonjour ShaiLeTroll,
oui pour la norm ieee754
alors oui avec un nombre entier la conversion en binaire fonctionne effectivement
il faudrait que je trouve le moyen d'arrondir mon edit5.text en supérieur ou inferieur mais cela aurait pour conséquence de décalé ma fréquence de travail en utilisation de mon eeprom
comment expliquer pourquoi:
j'ai un fichier en .hex pour programmer un circuit intégré de type eeprom que j'injecte dans ce CI
il contient une information que je doit modifier
cet infos correspond a une fréquence " 410 mhz actuellement
je doit donc changer cet fréquence dans mon fichier
ma nouvelle fréquence est par exemple " 433.800 mhz
je doit convertir en binaire rajouté un bits et le convertir en hexadécimal pour le changer dans mon fichier
car vous l'avez compris les 800 corresponde a 800 khz presque 1 mhz
voila pourquoi j'essais avec cet fonction a virgule
convertir ma fréquence en multipliant par 2048 ex: 432 x 2048 = 884*736 ///// si 432.800 = 67*174,4 , il me faudrait tronquer cet valeur en l'arrondissant a 67 174
convertir en binaire qui donne = 1101 1000 0000 0000 0000
mon binaire je doit lui rajouté 1 bits = 1101 1000 0000 0000 0001
convertir le binaire en hexa = 0x 0D 80 01
inversé les poids 01 80 0D
c'est ce résultat que je doit écrire dans mon fichier
voila
et vous avez raison bien sur d'être étonné sur ma conversion a virgule
cordialement
Citation:
Envoyé par
ShaiLeTroll
A lire
Représentation binaire d'un entier.
un nombre floattant en binaire ?
c'est IEEE 754 qu'il faut étudier, à mon avis vous confondez la conversion Entier avec sa représentation binaire 0010010001 ... et la conversion d'un Double qui a une structure plus subtile.