Чтение bin-файла как int16 - PullRequest
0 голосов
/ 13 июня 2018

После считывания двоичного файла в мою программу у меня появляется D6, равный HEX.Проблема в том, что я получаю 214 вместо -42 из интерпретации D6.После долгих исследований в интернете я понял, что мне нужно использовать int16, чтобы получить -42.Может кто-нибудь, пожалуйста, скажите мне, как я могу сделать это в C?

Это очень длинный файл кода, я постарался как можно меньше разместить свой код здесь:

uint32_t prog_size;
byte_t *text_buffer;
int program_counter = 0;
fread(&prog_size,sizeof(uint32_t),1,fp); // you can assume the first 4 bytes 
                                         //of the binary code indicates the 
                                         //size of the program
prog_size = swap_uint32(prog_size); // for little-endianness
text_buffer = malloc(sizeof(byte_t)*prog_size);
fread(text_buffer,sizeof(byte_t),prog_size,fp);

void match(int program_counter)
{
    switch (text_buffer[program_counter])
    {
      case OP_BIPUSH:
        program_counter++;
        push(text_buffer[program_counter]);
        break;
    }
}
printf printf("%u\n", text_buffer[program_counter] );
// assume that text_buffer[program_counter] is D6 in HEX

Заранее спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Неважно, я решил это.

в функции Push Я должен был использовать int8_t вместо int32_t

...