全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1919
推到 Plurk!
推到 Facebook!

請教讀檔時 讀取16進位內容出現的問題

尚未結案
wen142
一般會員


發表:22
回覆:27
積分:14
註冊:2004-06-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-18 13:21:52 IP:61.222.xxx.xxx 未訂閱
各位大大您好 想要請教一下~~小弟使用C的語法在DOS模式下作讀檔的時候,有些檔案內容必須使用"x"也就是16進位格式才可以顯示,但是有些內容原先的資料為0080 卻讀取出來變成00ffffff80,或是b2變成ffffffb2 請問這是什麼情況?? 此外,我有用過atoi(),strtol(),strtoul(),等函式希望將上面所提到的字串內容改成整數類型卻屢屢讀不到正確資料,試問是要將16進位字串資料先轉成10進位再轉成整數資料嗎?? 例如:0080 轉成整數 常只會讀到00 ,而80就沒有讀到。 bcb新手上路 請多指教
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-18 13:59:28 IP:61.228.xxx.xxx 未訂閱
wen142,    沒看到你的作法不知道你的問題是出在哪邊,下面是否是你要的結果
char *str="0080",*end;
int val;
val=strtol(str,&end,16); 
printf("X",val);
wen142
一般會員


發表:22
回覆:27
積分:14
註冊:2004-06-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-20 14:09:41 IP:61.31.xxx.xxx 未訂閱
感謝GeorgeKu大大的回應 其實大大的寫法正是我程式碼中大部分的寫法,因為小弟直覺認為從檔案中取資料可以用char陣列就可以取出所有資料,剩下的就是顯示上(printf)或是資料型態轉換上的問題,但似乎想得太簡單了,因為我後來發現,固定取2BYTES的資料的資料型態有很多種,最好取直的方式還是和原先輸入的一樣會比較好 結論就是~~我後來改用unsigned short 的格式去讀取資料,就解決在16進位下0080卻變成00ffffff80。 以上這問題僅供大家在檔案讀取資料時的參考 感謝各位大大~~︿︿ bcb新手上路 請多指教
系統時間:2024-06-08 13:23:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!