簡體   English   中英

字符到字節簽名

[英]Signed char to byte

我有一個用C編寫的二進制文件,其中包含一個等於數字1的帶符號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);

Java的:

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范圍檢查以確定是否可以將其存儲在單個字節中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM