How do i convert decimal to hexadecimal for floating points
Ältere Kommentare anzeigen
I have attached the screenshots, in which i have extracted HOG features for a image and found its values in floating point but when i am converting the same decimal values to hexadecimal i am getting the error. please help
8 Kommentare
There is no single "standard" way of encoding values with fractional values using binary/hexadecimal. First you need to specify which of the many possible encoding methods you want to use, and then obtain/implement a function for that encoding.
So, how do you want to encode your decimal fractions?
Tousif Ahmed
am 20 Jul. 2017
Tousif Ahmed
am 24 Jul. 2017
Walter Roberson
am 24 Jul. 2017
Which FPGA are you using that supports double precision numbers? I did encounter one FPGA a couple of months ago that supported single precision, but not double precision.
When you program an FPGA you are almost always using Fixed Point. The method for converting Fixed Point to hex are a bit different than what has been posted.
Tousif Ahmed
am 24 Jul. 2017
Tousif Ahmed
am 24 Jul. 2017
Guillaume
am 24 Jul. 2017
@Walter,
As far as I know, all Xilinx FPGAs support single precision (and half-precision) floating-point (but not double). I commonly use single precision for some operations on my national instruments c-rio fpgas (programmed in labview). It does use a ton of gate and requires a lot more clock cycles than fixed-point though.
Stephen23
am 3 Aug. 2017
See also almost this identical question:
Akzeptierte Antwort
Weitere Antworten (2)
mansour torabi
am 18 Feb. 2021
You can simply write your own floating point to hex converter, like the following:
x = 5329.675; % Floating point number
xI = floor(x); % Integer Part
HI = dec2hex(xI); % Integer Part in Hex
xF = x - xI; % Floating part
HF = ''; % Floating part in Hex (begining)
ii = 0;
while xF > 0
ii = ii + 1;
ff = xF * 16^ii;
II = floor(ff);
HF = [HF, dec2hex(II)];
xF = ff - II;
end
x_hex = [HI,'.',HF] % Concatinate both Integer and Floating Part in HEX format
1 Kommentar
Victor Tamino
am 27 Aug. 2021
Unfortunately, this code works with errors. If we try to convert 0.45619303 answer is: '0.74C911835D980', but correct answer is 0.74C91100835D98. And another example: 0.38574379 -> '0.62C1AE2AF622C0', but correct answer is 0.62C01AE2AF622DC. As we can see, your function loses zeros in the hex fractional part.
Where is the mistake? I can't understand.
Giancarlo Soasti
am 25 Okt. 2018
0 Stimmen
dec2hex is the function you are probably looking for
2 Kommentare
Walter Roberson
am 25 Okt. 2018
No, dec2hex only works on nonnegative integers. If you look at the images the original poster posted, they need to convert floating point numbers including fractions.
Giancarlo Soasti
am 26 Okt. 2018
Yep. You are right. I should have paid attention to the images.
Kategorien
Mehr zu Digital Number Representation finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!