![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.01.2010
Сообщений: 10
|
![]()
Задача: Написать Программу чтения из двоичного файла действительного 64-разрядного числа с фиксированной точкой (структура числа: первые 4 байта -целая часть, следующие 4 байта - дробная часть).
вот что написал: int main() { char fname[64]; cout << "Enter file name: "; cin >> fname; FILE * f = fopen(fname, "rb"); // открываем в бинарном режиме if(!f) { cout << "Error open file!" << endl; return 1; } char buf1[4], buf2[4], buf3[30]; unsigned int a,b; fread(&a, 1, 4, f); cout << "a= " << a << endl; // cout << "hex(a) = " << hex << a << endl; // fread(&b, 1, 4, f); cout << "b= " << b << endl; cout << "hex(b) = " << hex << b << endl; // cout << "-----" << endl; unsigned long int j=1; double d, c=0; for(int i = 28, k = -8; i >= 0; i-=4, k+=1) // по завершению цикла в с - дробная часть { d = pow (16, k); //c=(b << i)/j; //cout << c << " "; c = c + ((( b << i )/j)*d); j=j*16; } cout << endl; unsigned long int j1=1; double d1, c1=0; for(int i = 28, k = 7; i >= 0; i-=4, k-=1) // по завершению цикла в с1 - целая часть числа { d1 = pow (16, k); //c1=(a >> i); //cout << c1 << " "; //c1 = c1+(( a >> i )*d1); } double result; result = c1+c; cout << "Result: " << result; getch(); return 0; } Работает но несовсем правильно( Правильно работает например с таким файлом 01 00 00 00 | 00 00 00 80 выдает 1.5. А если в втором байте больше одной цифры начинаются глюки( |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение из файла | pautina | Общие вопросы Delphi | 8 | 23.01.2009 15:48 |
Чтение из файла | e@gle | Общие вопросы Delphi | 3 | 14.12.2008 17:21 |
Чтение из файла | Amen | БД в Delphi | 2 | 09.12.2008 10:40 |
Чтение файла | Stanislav | Общие вопросы Delphi | 18 | 24.11.2007 20:45 |