有關讀取Byte的問題 |
尚未結案
|
mickey10112001
一般會員 發表:29 回覆:14 積分:8 註冊:2006-08-04 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
進制是人在看的。
是一種表示法。並不是值。 一個值用不同的進制表示,就有不同的”寫法”。你先把這個概論上的觀念搞清楚。 再來你要看的是 char, unsigned char 它們的數值範圍。 short int, unsigned short int 的數值範圍。 再來,寫一支程式 做 fwrite 寫一個 short int 的值到 file 去。 然後用 ultraedit 去看看這個值變成怎樣。 再寫一支程式用 fread 把值讀進來到 char, short int.....etc 分別試看看。看看讀出來的值有什麼不同。差異在那邊? 你做完這些,我們再來討論你的問題,看你的問題還在不在。 ===================引 用 文 章=================== 有一筆十進制的數據需要去讀取,那將這筆數據存成Binary檔案時,使用UltraEdit將檔案打開
會自動轉成16進制,但是發現只能轉換成十進制的最大值255而已,但是有許多數據超過255,不 能完整讀取出來請問大大是否有辦法解決增加至2byte |
raylee166
一般會員 發表:6 回覆:5 積分:2 註冊:2006-07-29 發送簡訊給我 |
版主,請問一下若是我只需要將MEMO上的資料存成Binary檔案,然後用ultraedit 開啟看其形式
那還需要做fread的動作嗎?? ---------------------------------------------------------------------------------- fprintf(F,"%x%x%x%x%x",G1,G1,X4,Y4,Z4); 0000000001f4004785eb00000fffffe160000fffffff60041f ---------------------------------------------------------------------------------- fprintf(F,"%c%c%c%c%c",G1,G1,X4,Y4,Z4); 00000000h:00 00 00 00 00 00 00 00 00 F4 00 00 78 EB 00 00 00000010h:00 00 00 16 00 00 00 00 F6 00 00 41 FC 00 00 00 ----------------------------------------------------------------------------------- 1.這是我先前的寫法,小弟不懂為何開啟之後的格式會不相同 2.紅點部份正確的數值應該是01F4,很明顯地二種寫法自動省略了01,僅顯示一個byte 3.版主所提及的fwrite寫法我也嘗試了,但是結果與第一種寫法相同,而我透過ultraedit 所開啟的格式需求是第二種寫法. 4.char -128~127 , unsigned char 0~255 , unsigned short int 0~65535 ,short int -32768~32767 5.之所以第二種的錯誤小弟是認為我的變數是以int的方式做計算,但是我卻是用.1個byte去讀取 但是除了使用%c以外我嘗試用其他如%d%s..等,格式卻與第二種不同 ===================引 用 文 章=================== 進制是人在看的。 是一種表示法。並不是值。 一個值用不同的進制表示,就有不同的”寫法”。你先把這個概論上的觀念搞清楚。 再來你要看的是 char, unsigned char 它們的數值範圍。 short int, unsigned short int 的數值範圍。 再來,寫一支程式 做 fwrite 寫一個 short int 的值到 file 去。 然後用 ultraedit 去看看這個值變成怎樣。 再寫一支程式用 fread? 把值讀進來到 char, short int.....etc 分別試看看。看看讀出來的值有什麼不同。差異在那邊? 你做完這些,我們再來討論你的問題,看你的問題還在不在。 ===================引 用 文 章=================== 有一筆十進制的數據需要去讀取,那將這筆數據存成Binary檔案時,使用UltraEdit將檔案打開
會自動轉成16進制,但是發現只能轉換成十進制的最大值255而已,但是有許多數據超過255,不 能完整讀取出來請問大大是否有辦法解決增加至2byte
------
HELP!! |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
>版主,請問一下若是我只需要將MEMO上的資料存成Binary檔案,然後用ultraedit 開啟看其形式
你想學好這個東西。你就先別用 MEMO 去做實驗。等你懂了之後你再去用 MEMO 來玩。 >---------------------------------------------------------------------------------- >fprintf(F,"%x%x%x%x%x",G1,G1,X4,Y4,Z4); >0000000001f4004785eb00000fffffe160000fffffff60041f >---------------------------------------------------------------------------------- >fprintf(F,"%c%c%c%c%c",G1,G1,X4,Y4,Z4); >00000000h:00 00 00 00 00 00 00 00 00 F4 00 00 78 EB 00 00 >00000010h:00 00 00 16 00 00 00 00 F6 00 00 41 FC 00 00 00 >----------------------------------------------------------------------------------- >1.這是我先前的寫法,小弟不懂為何開啟之後的格式會不相同 什麼叫開啟之後? >2.紅點部份正確的數值應該是01F4,很明顯地二種寫法自動省略了01,僅顯示一個byte 你要不要去想想 %c 它代表什麼? 01F4 有沒有超過 %c 的範圍? >3.版主所提及的fwrite寫法我也嘗試了,但是結果與第一種寫法相同,而我透過ultraedit > 所開啟的格式需求是第二種寫法. >4.char -128~127 , unsigned char 0~255 , unsigned short int0~65535 ,short int -32768~32767 >5.之所以第二種的錯誤小弟是認為我的變數是以int的方式做計算,但是我卻是用.1個byte去讀取 > 但是除了使用%c以外我嘗試用其他如%d%s..等,格式卻與第二種不同 我要你試著用 fread, fwrite 而不是用 fprintf
確實去了解 char, short, int, 寫入檔案後它的排列順序。 去讀出來時,它的順序又會怎樣。 而不是要你去用更高一層動作的 printf. 再去試試吧。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |