線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1862
推到 Plurk!
推到 Facebook!

有關讀取Byte的問題

尚未結案
mickey10112001
一般會員


發表:29
回覆:14
積分:8
註冊:2006-08-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-10 16:37:18 IP:140.128.xxx.xxx 未訂閱
有一筆十進制的數據需要去讀取,那將這筆數據存成Binary檔案時,使用UltraEdit將檔案打開

會自動轉成16進制,但是發現只能轉換成十進制的最大值255而已,但是有許多數據超過255,不

能完整讀取出來請問大大是否有辦法解決增加至2byte
編輯記錄
dllee 重新編輯於 2007-04-21 19:13:25, 註解 修改文章分類由 無 -> 問題, 提問時, 請記得選擇 [問題] 分類, 才能把分數給辛苦答題的會員, 謝謝您的配合‧‧
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-10 18:45:21 IP:220.131.xxx.xxx 訂閱
進制是人在看的。
是一種表示法。並不是值。
一個值用不同的進制表示,就有不同的”寫法”。你先把這個概論上的觀念搞清楚。
再來你要看的是 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-11 16:26:23 IP:140.128.xxx.xxx 訂閱
版主,請問一下若是我只需要將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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-12 09:10:33 IP:218.170.xxx.xxx 訂閱
>版主,請問一下若是我只需要將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.
再去試試吧。
系統時間:2024-05-05 23:01:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!