dans Matlab (R2009b) I ont une variable de uint32 contenant la valeur 2147484101.MATLAB: Conversion d'un uint32 (4 octets) Valeur à la norme IEEE simple précision forme à virgule flottante correspondant
Ce nombre (sa 4- octets) a été extrait d'une caméra numérique de vision industrielle dans un processus de saisie. D'après ce que je comprends il tient la forme de précision de la vitesse d'obturation de la caméra (devrait être proche de 1/260s = 3.8ms). Comment puis-je convertir ce nombre de 32 bits en sa représentation à virgule flottante simple précision IEEE - en utilisant ce qui est disponible dans MATLAB?
avec la valeur mentionnée dans la variable n , j'ont essayé d'utiliser une combinaison de nn = DEC2HEX (n, 16) puis hex2num (nn). Mais il semble que hex2num s'attend à ce que le codage hexadécimal soit double précision et non unique comme c'est ici. Atleast je reçois des nombres étranges avec cette méthode.
Des idées?
Edit: Essayé @ réponse de Matt ci-dessous:
typecast(uint32(2147484101),'single') %# without swapbytes
typecast(swapbytes(uint32(2147484101)),'single') %# with swapbytes
Ce qui donne:
ans =
-6.3478820e-043
ans =
-2.0640313e+003
J'ai essayé le convertisseur IEEE 754 (applet JAVA) à http://www.h-schmidt.net/FloatApplet/IEEE754.html.
utilisant:
format hex
typecast(uint32(2147484101),'uint8') %# without swapbytes
typecast(swapbytes(uint32(2147484101)),'uint8') %# with swapbytes
donne
ans =
c5 01 00 80
ans =
80 00 01 c5
La saisie de ces octets dans l'applet (hexadécimal) me donne les mêmes chiffres que Matlab.
Oui, il doit être '' typecast' et non cast'. Mais je n'obtiens pas vraiment les valeurs que j'espérais. Vous voyez, je n'ai aucune connaissance préalable des nombres.Je ne suis même pas sûr que je les ai stockés correctement :) Je viens de vérifier à l'aide d'une applet Java. Donc, votre méthode est saine. +1 et accepté –
@Ole Thomsen Buus: Il est difficile de suggérer ce que vous pourriez faire différemment sans connaître la méthode par laquelle vous êtes arrivé à votre uint32, ou la spécification du fichier/appareil que vous lisez. J'espère que vous comprendrez où ça va mal ... – Matt