08.02.2013, 01:51
|
|
Временная регистрация
Регистрация: 29.03.2009
Сообщений: 61
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Перевод IEEE 754 в HEX
Здравствуйте!
Вот у меня возникла непонятка. Я работала все время с целыми числами, т.к. работала, в основном, с микроконтроллерами. А тут такая незадача… Есть устройство, некий датчик, который передает данные в формате IEEE -754. Т.е. в виде дроби, с мантиссой и порядком. Сам стандарт посмотрела, в представлении все понятно, но мне, как говорится, абсолютно не нужно это представление, мне нужно вывести это число на дисплей, и только. Т.е. мне нужно перевести это число в нормальный шестнадцатиричный, или двоично-десятичный код, чтобы можно было просто вывести на дисплей моего прибора. Т.е, может, кто-то писал преобразование из IEEE 754 в двоично-десятичное число?
С уважением.
|
|
|
|
08.02.2013, 02:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Перевод IEEE 754 в HEX
|
|
|
|
08.02.2013, 20:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Перевод IEEE 754 в HEX
Что то тишина... В MCS51 - на С не разгуляшься.
Какой у Вас диапазон чисел и точность?
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
08.02.2013, 22:15
|
|
Временная регистрация
Регистрация: 29.03.2009
Сообщений: 61
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Перевод IEEE 754 в HEX
Сообщение от Boba_spb
|
Что то тишина... В MCS51 - на С не разгуляешься.
Какой у Вас диапазон чисел и точность?
|
Диапазон чисел от 0,0001 до 100. (Десятичные). Точность - половина самого мелкого значения, т.е. 0,00005, в общем, наверное, на это можно закрыть глаза и посчитать 0,0001.
П.С. Хоть Си, хоть что, хотелось бы просто понять алгоритм преобразования именно из IEEE 754 в десятичный, а не наоборот.
Последний раз редактировалось Belka12; 09.02.2013 в 00:13.
|
|
|
|
08.02.2013, 23:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Перевод IEEE 754 в HEX
Ну тады все будет просто.
|
|
|
|
09.02.2013, 00:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Перевод IEEE 754 в HEX
Что то типа такого
PHP код:
|
void FloatToStr(char *tx,float a)
{
int i =*(int *)&a;
int p= (i››23)&255;
int m=( i & 0x7fffff )| 0x800000;
if(p==0)
{
*tx++='0';
*tx=0;
return;
}
if(i‹0)
{
*tx++='-';
}
p=p-127;
if(p›0)
{
m‹‹=p;
}
else
{
if(p‹0)
{
p=-p;
m››=p;
}
}
i=(m››23);
m= (m&0x7fffff)››12;
m*=125;
if(m&0x80)
{
m+=256;
}
m››=8;
*tx++='0'+i/100;
i%=100;
*tx++='0'+i/10;
*tx++='0'+i%10;
*tx++='.';
*tx++='0'+m/100;
m%=100;
*tx++='0'+m/10;
*tx++='0'+m%10;
*tx=0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *tx="+100.000";
float a[]={123.999,100.09,100.009, 123.1,100.01,100.001,};
Memo1-›Lines-›Clear();
for(int i=0;i‹sizeof(a)/sizeof(float);i++)
{
FloatToStr(tx,a[i]);
Memo1-›Lines-›Add(tx);
}
}
|
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:41.
|
|