看板 C_and_CPP 關於我們 聯絡資訊
檔案指標 ptr 有一個int a[32*32] 裡面存數字代表像素 可否直接 for(int i=0;i<32*32;i++) fwrite(&a[i],sizeof(char),1,ptr); 如果寫sizeof(int)會失敗 寫char就可以 可是這樣會不會有型態轉換的問題?! 怕跑出來的圖是不對的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.152.134 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1422543671.A.75D.html
LPH66: 我的水晶球顯示你或許是用"w"開檔, 用"wb"看看? 01/30 00:11
Killercat: 我的水晶頭微微點了個頭,判定需2,命中機率1d6+1 01/30 00:19
BlazarArc: 本板培育出許多隔空抓藥專家 01/30 00:23
suhorng: 話說假設是 32-bit 平台或 LP64 01/30 00:32
suhorng: 一個 sizeof(int) = 4, 一個像素 24-bit, 我有什麼誤會嗎 01/30 00:32
suhorng: 而且是有 RGB 還是只有 256 灰階? 01/30 00:33
Killercat: 不過說真的 好歹給個errno咩... 用ferror(ptr)看看吧 01/30 00:35
Killercat: 用linux sdk出的包 給個error 方便自己 也方便別人 :P 01/30 00:36
Push5F: 我的水晶球顯示你在睡覺了 01/30 01:33
andy410061: 我的水晶球顯示你還沒起來 01/30 05:05
我是用WB開檔 我要輸出的圖是灰階圖 input只有灰階像素值 我試著輸出成BMP 圖檔 或是YUV圖檔 輸出都要寫成CHAR輸出圖片才跑得出來 但資料是int 感覺這樣型態應該不對 ?! 沒用過ferror...不過應該直接看圖片有沒有問題意思一樣?! 另外 for(int i=0;i<32*32;i++) fwrite(&a[i],sizeof(char),1,ptr); 如果寫成以下這樣 圖片也出不來 fwrite(a,sizeof(char),32*32,ptr) 感覺應該這2個應該是一樣的?!只是一個是連續記憶體一個是不連續?! 不知道為何寫成下面那個就會有問題 http://www.codeshare.io/SQ6qM yuv檔案寫入 ※ 編輯: unixxxx (140.115.152.134), 01/30/2015 13:44:15
anyoiuo: 兩者不同唷int a[32x32]大小是32*32*sizeof(int) 01/30 17:33
anyoiuo: For迴圈那方式是在&a[i]輸出1個byte 01/30 17:34
anyoiuo: 而第二個方式i看起來是0是在&a[0]處印32byte 01/30 17:35
anyoiuo: 32*32byte才對 01/30 17:36
anyoiuo: 簡單說有個int a[2] = {0x00010203, 0x04050607} 01/30 17:38
我把問題打錯了..已修正 ※ 編輯: unixxxx (140.115.152.134), 01/30/2015 18:25:35
anyoiuo: 用兩種方法會看到一個03 02,一個03 07 01/30 19:09
anyoiuo: 讀寫BMP應該要考慮檔案的Header 01/30 19:13
anyoiuo: 像這樣http://www.codeshare.io/5G23Q 01/30 19:13
我大概懂了 感謝!! ※ 編輯: unixxxx (114.43.71.64), 01/30/2015 21:34:22