Как использовать функции fread и fwrite для чтения и записи двоичных файлов?

Привет в моем проекте я должен прочитать .bin файл, который имеет данные датчика в видеshort(16 bit values), Я делаю это с помощьюfread функция в буфер, но я чувствую, что чтение происходит неправильно. я имею в видунет никакой согласованности между тем, что я пишу, и тем, что я читаю. Ребята, можете подсказать, что здесь происходит не так? Это не мой код из моего проекта ... Я только пытаюсь проверитьfread а такжеfwrite функции здесь.

#include<stdio.h>
void main()
{
    FILE *fp = NULL;

    short x[10] = {1,2,3,4,5,6,5000,6,-10,11};
    short result[10];

    fp=fopen("c:\\temp.bin", "wb");

    if(fp != NULL)
    {
        fwrite(x, 2 /*sizeof(short)*/, 10 /*20/2*/, fp);
        rewind(fp);
        fread(result, 2 /*sizeof(short)*/, 10 /*20/2*/, fp);
    }
    else
        exit(0);

    printf("\nResult");
    printf("\n%d",result[0]);
    printf("\n%d",result[1]);
    printf("\n%d",result[2]);
    printf("\n%d",result[3]);
    printf("\n%d",result[4]);
    printf("\n%d",result[5]);
    printf("\n%d",result[6]);
    printf("\n%d",result[7]);
    printf("\n%d",result[8]);
    printf("\n%d",result[9]);

    fclose(fp)
 }

После того, как я сделаю fread () (значения HEX):

temp.bin:
01 02 03 04 05 06 e1 8e 88 06 ef bf b6 0b...

После того, как я делаю fwrite ()

stdout:
Result
0
914
-28
-28714
-32557
1
512
-32557
908
914

Ответы на вопрос(2)

Ваш ответ на вопрос