В данный момент я нахожусь в самом начале написания простой виртуальной машины в C и застрял на, пожалуй, самой простой части, поскольку после этого все это будет иметь смысл. Я пытаюсь прочитать приведенный ниже двоичный файл input.bin
в мой глобальный массив memory
, а затем, как только я прочитал эти данные, чтобы затем выполнить обработку этих данных. Учитывая мой текущий код, приведенный ниже, я получаю вывод данных, но не в правильной форме, которая хранит форму так, как она должна быть введена, есть ли способ специально вводить данные в формате big-endian
? Я проверяю содержимое моего input.bin
файла с помощью команды od -x --endian=big input.bin | head -5
MAIN. c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXMEM 1024
unsigned memory[MAXMEM];
size_t loads(char *filename)
{
FILE *file = fopen(filename, "rb");
if(!file){
perror("Failed to read file");
exit( EXIT_FAILURE);
return fread(memory, sizeof *memory, MAXMEM, file);
}
int main(int argc, char **argv){
if(argc <= 1){
printf("No file Found\n");
return -1;
}
char *filename = argv[1];
loads(filename);
printf("%02x %02x\n", memory[0], memory[1]);
}
INPUT.bin
b10a b200 1123
ТЕКУЩИЙ ВЫХОД
b20ab1 2311
Желаемый выход
b10a b200 1123
OR
b1 0a b2 00 11 23