【发布时间】:2015-01-17 07:30:06
【问题描述】:
我有一个用 C 语言编写的二进制文件,其中包含一个等于数字 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);
Java:
byte b;
b = file.read();
System.out.println(b) ===> prints the number 49.
我知道这是某种位顺序之类的,但我不确定。
谢谢
【问题讨论】:
-
你是如何在 Java 中构造
file的? -
不能认为 '1' 是 ASCII 49。
-
我意识到这一点。我想知道如何用另一种方式解释它。
-
@Fra:试试
signed char c = '1'; -
你确定你没有在 C 语言中做
signed char c = '1';还是你从其他地方得到1而不是你说的?注意signed不是必需的,C 中的char已签名。
标签: java c type-conversion