I’m struggling with converting a 32-bit hex expression into a single precision number in Matlab.
The num2hex function works fine for both. For example,
>> b = 0.4 b = 0.400000000000000 >> class(b) ans = double >> num2hex(b) ans = 3fd999999999999a >> num2hex(single(b)) ans = 3ecccccd
However, this does not work the other way around. The hex2num function only converts hexadecimal expression into doubles. So,
>> b = 0.4
b =
0.400000000000000
>> num2hex(single(b))
ans =
3ecccccd
>> hex2num(ans)
ans =
3.433227902860381e-006
Matlab simply pads zeros to make it a 64-bit hex. Is there a way to perform this conversion?
It doesn’t seem to be possible with the built-in
hex2num, but fortunately you can get a single precision version ofhex2num(hexsingle2num) here: http://www.mathworks.com/matlabcentral/fileexchange/6927-hexsingle2num