Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   чтение int бинарно из файла (https://forum.antichat.xyz/showthread.php?t=113111)

cupper 26.03.2009 16:10

чтение int бинарно из файла
 
Нужно бинарно считать файл, структуру файла знаю.
Первым значением идет unsugned int.
Вот началные байты 0x00, 0x00, 0x08, 0x01 это число 2049. А в переменно после считывания храниться число 17301504 это как раз если в байтах 01 08 00 00, в точности наоборот.
Есть ряд функци меняющий порядок байт в числе, из низх по иписанию подходит
ntohl - осуществляет перевод целого длинного числа из сетевого порядка байт в порядок байт, принятый на компьютере
но она кажеться только дя MVS.
как можно считать int из файл в бинарном режиме чтобы получить число которое там записано

SmanxX1 26.03.2009 16:58

PHP код:

FILEfp;
unsigned int var;

fp=fopen(szFileName,"rb");
fseek(fp,0,SEEK_SET);
fread(&var, sizeof(unsigned int),1,fp);
fclose(fp); 

Прочитает uint32.

И не стоит путать способы хранения переменных в файлах и в памяти!

Для проверки можно сделать так:
PHP код:

printf("var=%#2.2x",var); 


FoX's 26.03.2009 21:54

Цитата:

ntohl - осуществляет перевод целого длинного числа из сетевого порядка байт в порядок байт, принятый на компьютере
но она кажеться только дя MVS.
Import Library: Link with ws2_32.lib ;)
можно как замену использовать:
Цитата:

long _ntohl(long toswap)
{
__asm
{
mov eax,toswap
bswap eax

}
}

cupper 26.03.2009 22:55

Цитата:

Import Library: Link with ws2_32.lib
в DEV-C++ незнаю как присоединить, в MVS непомогло.

St0nX 27.03.2009 00:24

#pragma comment(lib,"ws2_32.lib")


Время: 09:31