[問題] 把bin檔內容存進陣列

看板C_and_CPP作者 (飛天小牛)時間12年前 (2013/03/27 23:54), 編輯推噓2(208)
留言10則, 7人參與, 最新討論串1/1
問題(Question): 把bin檔的內容存到陣列裡 餵入的資料(Input): 我用sublime text 2 打開bin檔裡的內容 0000 0200 0000 0023 9402 0002 1440 000b 程式碼(Code): #include <stdio.h> int main() { int i; FILE *ftp; ftp = fopen("iimage.bin", "rb"); fread(&i, 1, 1, ftp); printf("%d\n", i); return 0; } 顯示出的質是0 Q1 不知 fread(&i, 1, 1, ftp); 這行是否表示讀入00 這一個 byte 並且以int 的形式表示?但好像i又沒有讀到東西?請問是錯在哪? Q2 我的目標是要把這16進位的內容存到陣列裡,請問要如何做? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.218.4 ※ 編輯: jasonkd 來自: 122.116.218.4 (03/28 00:04)

03/28 01:31, , 2F
讀一個byte放入i的位址,但是卻i是個int,為什麼要這樣呢?
03/28 01:31, 2F

03/28 01:33, , 3F
一般應該是用個char的buffer,然後檢查讀到幾byte在處理吧
03/28 01:33, 3F
因為char印出來的是一些奇怪的符號,不好分析,想說int讀出來至少是數字 ※ 編輯: jasonkd 來自: 122.116.218.4 (03/28 01:51)

03/28 08:04, , 4F
你的byte是全世界最大的 有32 bits
03/28 08:04, 4F

03/28 08:08, , 5F
我的byte是才只有8 bits (char) 哭哭 >"<
03/28 08:08, 5F

03/28 11:57, , 6F
我的byte才8bits,看來我該讓賢了。
03/28 11:57, 6F
打錯= = ※ 編輯: jasonkd 來自: 122.116.218.4 (03/28 13:59)

03/28 14:01, , 7F
00 用 int 顯示不就是 0 嗎, 你的問題在哪
03/28 14:01, 7F

03/28 21:39, , 8F
可以用16進位%x來印,這樣就不會有奇怪的符號了
03/28 21:39, 8F

03/29 08:21, , 9F
沒意外int有四個byte,目前fread只修改1個byte,剩下3個byte
03/29 08:21, 9F

03/29 08:22, , 10F
未定義,有可能印出亂碼
03/29 08:22, 10F
文章代碼(AID): #1HKnOsm7 (C_and_CPP)