После считывания двоичного файла в мою программу у меня появляется 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
Заранее спасибо!