У меня есть двоичный файл, написанный на 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.
Я знаю, что это какой-то бит-порядок или что-то еще, но я не уверен.
благодаря
Проблема заключается в следующем:
sscanf(&buffer[0],"%c",&c);
он говорит, чтобы отсканировать входящий символ как значение ascii. поэтому вы можете набирать "a", "-" или "1", а значение ascii будет сканироваться.
вам нужно будет сканировать %d
вместо этого, чтобы получить фактическое целое число. вы будете сканировать в переменную int вместо char, затем выполните проверку диапазона 0-255, чтобы определить, можно ли ее хранить в одном байте.
file
в Java?