Как правильно распечатать / отсортировать данные двоичного файла, считанные в массив, используя fread - PullRequest
0 голосов
/ 27 марта 2020

В данный момент я нахожусь в самом начале написания простой виртуальной машины в 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 
...