我有一个用C编写的二进制文件,其中包含一个等于数字1的signed char数据类型。 我使用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 :(得分:2)
问题在于:
sscanf(&buffer[0],"%c",&c);
它表示将传入的字符扫描为ascii值。所以你可以输入'a',' - '或'1'来扫描ascii值。
您需要扫描%d
才能获得实际的整数。你会扫描到一个int变量而不是一个char,然后进行0-255范围检查以确定它是否可以存储在一个字节中。