чтение int бинарно из файла

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cupper, 26 Mar 2009.

  1. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    Нужно бинарно считать файл, структуру файла знаю.
    Первым значением идет unsugned int.
    Вот началные байты 0x00, 0x00, 0x08, 0x01 это число 2049. А в переменно после считывания храниться число 17301504 это как раз если в байтах 01 08 00 00, в точности наоборот.
    Есть ряд функци меняющий порядок байт в числе, из низх по иписанию подходит
    ntohl - осуществляет перевод целого длинного числа из сетевого порядка байт в порядок байт, принятый на компьютере
    но она кажеться только дя MVS.
    как можно считать int из файл в бинарном режиме чтобы получить число которое там записано
     
  2. SmanxX1

    SmanxX1 Elder - Старейшина

    Joined:
    4 Aug 2008
    Messages:
    27
    Likes Received:
    6
    Reputations:
    2
    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);
     
    #2 SmanxX1, 26 Mar 2009
    Last edited: 26 Mar 2009
    1 person likes this.
  3. FoX's

    FoX's Дохлый

    Joined:
    26 Dec 2004
    Messages:
    169
    Likes Received:
    29
    Reputations:
    0
    Import Library: Link with ws2_32.lib ;)
    можно как замену использовать:
     
  4. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    в DEV-C++ незнаю как присоединить, в MVS непомогло.
     
  5. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    #pragma comment(lib,"ws2_32.lib")