签名char到byte

时间:2014-11-19 17:01:57

标签: java c type-conversion

我有一个用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.        

我知道这是某种秩序或其他什么,但我不确定。

由于

1 个答案:

答案 0 :(得分:2)

问题在于:

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

它表示将传入的字符扫描为ascii值。所以你可以输入'a',' - '或'1'来扫描ascii值。

您需要扫描%d才能获得实际的整数。你会扫描到一个int变量而不是一个char,然后进行0-255范围检查以确定它是否可以存储在一个字节中。