Converting Hex value to negative fractional decimal

12 views (last 30 days)
Hello,
I am trying to convert the Hex value ('BF6E23F8').
I know that the answer should be (-0.93023634).
Please correct me if I am wrong, but I need to convert the Hex value to 2's complement binary, then to decimal?
I've attempted to use quite a few functions I've found online including hex2dec, Fr_bin2dec.
But I am hoping you can direct me towards the solution.
Thanks,
Ryan D'Souza
  2 Comments
James Tursa
James Tursa on 4 Feb 2015
Why do you know the answer for this particular example is -0.93023634? Do you have other example pairs you can post?
Ryan
Ryan on 5 Feb 2015
I know the answer for this example because the Hex values were converted by someone before I got my hands on it. But they were using another application and doing the conversion by hand, so I have no indication of what steps were used.
Sure, here are some more examples :
(Hex) --> (Decimal)
3CCCE6BD -> 0.025012368
BF6E158D -> -0.930016339
C1C63C18 -> -24.77934265

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 5 Feb 2015
It looks like your hexadecimal values are the representation of a single precision IEEE 754 number, in little endian format.
hexvalues = ['BF6E23F8';'3CCCE6BD';'BF6E158D';'C1C63C18']
hexbits = uint32(hex2dec(hexvalues)); %convert hexadecimal to 32-bit integer representation
[~, ~, endianness] = computer;
if endianness == 'B'
hexbits = swapbytes(hexbits); %on a big-endian computer, switch endianness
end
hexassingle = typecast(hexbits, 'single') %cast from integer to single

More Answers (0)

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!