Я в первую очередь программист на Python, но я работал с C , потому что Python слишком медленный для графики (движущиеся фракталы со скоростью 20 кадров в секунду FTW). Я попал в точку преткновения, хотя ...
Я написал небольшой файл в шестнадцатеричном редакторе для тестирования. Когда я пытаюсь прочитать первый байт, 5А, он правильно дает мне 90 с такой программой ...
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
FILE *data;
int main(int argc, char* argv[])
{
data=fopen("C:\\vb\\svotest1.vipc","r+b");
unsigned char number;
fread(&number,1,1,data);
printf("%d\n",number);
}
Но когда я пытаюсь прочитать первые четыре байта, 5A F3 5B 20, в целое число, я получаю 542896986
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
FILE *data;
int main(int argc, char* argv[])
{
data=fopen("C:\\vb\\svotest1.vipc","r+b");
unsigned long number;
fread(&number,1,4,data);
printf("%d\n",number);
}
Это должно быть 1525898016 !!!
Проблема в том, что он поменял порядок байтов. GAH! Конечно! То, как эта программа работает, будет зависеть от машины. И теперь, когда мы находимся на этой теме, даже байт не будет работать на каждой машине!
Так что мне нужна помощь ... В Python я могу использовать struct.pack и struct.unpack для упаковки данных в байты, используя любой формат (длинный, короткий, одинарный, двойной, со знаком, без знака, с прямым порядком байтов, с прямым порядком байтов) распакуйте его. Мне нужно что-то подобное в C ... Я мог бы написать это сам, но не знаю как.