Подпись char к байту

1

У меня есть двоичный файл, написанный на C, содержащий подписанный тип данных char, равный номеру 1. Я читаю в одиночном байте в байтовый тип данных, используя MappedByteBuffer. Однако, когда я распечатываю его, я получаю 49. Что я делаю неправильно?

C:

char * buffer = malloc(100);
signed char c;
int temp;
printf("Coordinate System?\n");
scanf("%s",&buffer[0]);
sscanf(&buffer[0],"%d",&temp);
c = temp+'0';
fwrite(&c,1,1,fd);

Ява:

byte b;
b = file.read();
System.out.println(b) ===> prints the number 49.        

Я знаю, что это какой-то бит-порядок или что-то еще, но я не уверен.

благодаря

  • 0
    Как вы создали file в Java?
  • 5
    Это не может быть доказательством того, что «1» - это ASCII 49.
Показать ещё 10 комментариев
Теги:
type-conversion

1 ответ

2

Проблема заключается в следующем:

sscanf(&buffer[0],"%c",&c);

он говорит, чтобы отсканировать входящий символ как значение ascii. поэтому вы можете набирать "a", "-" или "1", а значение ascii будет сканироваться.

вам нужно будет сканировать %d вместо этого, чтобы получить фактическое целое число. вы будете сканировать в переменную int вместо char, затем выполните проверку диапазона 0-255, чтобы определить, можно ли ее хранить в одном байте.

  • 0
    Большое спасибо за помощь, ребята.
  • 0
    Я не могу заставить его работать на стороне Java вещей. Выше описано, как я пытаюсь справиться с этим в Си при написании файла.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню