[英]Convert a member of structure of type signed char * to byte array in Java (byte[]) using SWIG
[英]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.