Je n'arrive pas à convertir une expression hexadécimale 32 bits en un seul nombre de précision dans Matlab.Convertir un hexadécimal en simple précision
La fonction num2hex
fonctionne correctement pour les deux. Par exemple,
>> b = 0.4 b = 0.400000000000000 >> class(b) ans = double >> num2hex(b) ans = 3fd999999999999a >> num2hex(single(b)) ans = 3ecccccd
Cependant, cela ne fonctionne pas dans l'autre sens. La fonction seule convertit l'expression hexadécimale en doubles. Ainsi,
>> b = 0.4 b = 0.400000000000000 >> num2hex(single(b)) ans = 3ecccccd >> hex2num(ans) ans = 3.433227902860381e-006
Matlab pads simplement des zéros pour en faire un hex 64 bits. Existe-t-il un moyen d'effectuer cette conversion?
pour la conversion avant (NUM2HEX), vous pouvez également utiliser fprintf/sprintf: 'sprintf ('% bx', b)' et 'sprintf ('% tx', seul (b)) ' – Amro
question similaire: [conversion 32 bits hexadécimal à 32 bits virgule flottante (IEEE 754) dans Matlab] (http://stackoverflow.com/questions/52327 26/32-bit-hex-à-32-bit-virgule flottante-ieee-754-conversion-en-matlab) – Amro