Вы можете использовать функцию Atoi для преобразования буфера в целое число. Пожалуйста, смотрите ниже рабочий код.
int main()
{
FILE *fp = fopen("data.txt", "r");
if(fp == NULL)
exit(0);
fseek(fp, 0, SEEK_END);
int length = ftell(fp);
fseek(fp, 0, SEEK_SET);
char* buffer = malloc(length + 1);
if (buffer)
{
fread(buffer, 1, length, fp);
}
//unsigned long num = (unsigned long)atol(buffer);
unsigned short num = (unsigned short)atoi(buffer);
printf("Number = %u\n", num);
fclose(fp);
return 0;
}
Если вы видите теоретический аспект, у вас есть два байта данных, каждый байт вносит свой вклад в значение в зависимости от позиции байта.
Скажите, что число 1337, в шестнадцатеричном это 0x05 0x39.
Таким образом, соответствующее целочисленное значение = (0x05 * 2 ^ 8) + 0x39 = (5 * 256) + 57 = 1337.
Надеюсь, это поможет вам.