看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《steven0315 (小志)》之銘言: : 標題: [問題] c讀取非文字檔,輸出add,16進制,ASCII : 時間: Mon Jul 5 22:18:07 2010 : : : 遇到的問題: (題意請描述清楚) : : 現在已經寫出來可以讀取文字檔(.TXT之類的) : : : 但要如何修改才也能夠讀取非文字檔(.exe之類) : 現在讀取非文字檔都會出現亂碼~"~ : : 希望得到的正確結果: : 下面是讀取文字檔的輸出結果 : : : address 16進制碼 ASCII : : 00000010 70 72 30 30 30 30 30 30 30 30 30 30 30 30 30 30 pr00000000000000 : 00000020 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 : 00000030 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 : : 程式跑出來的錯誤結果: : : 讀取非文字檔..16進制跟ASCII那都會跑出亂碼或怪東西 讀取非文字檔使用推文內教的rb去讀取 但還是一樣..16進制那會跑出FFFFFFAB<<類似這種一大串東西(用%02X輸出的) ASCII會跑出亂碼(用%c輸出) 跟正確程式比對後發現我的都會跑出FFFFFF**,而且ASCII那還有亂碼 正確的只會顯示 **,ASCII不會出現亂碼 : : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : : VC++ : : 有問題的code: (請善用置底文標色功能): http://nopaste.info/ecaad14745.html : 補充說明: : 目前想到的是會不會要先把檔案內容轉成2進制,再轉成16進制?..似乎挺麻煩的 還是有更好的辦法? : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 124.8.17.106 : → leslieha:"rb" ? 07/05 22:18 : → loveme00835:應該是一樓講的問題, 用二進位格式來讀應該就可以了 07/05 22:26 : → steven0315:感謝一F,我再來試看看 07/05 22:29 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.4.139
VictorTom:轉2進制再轉16進制?? 進制轉換只是顯示出來的文字與我們 07/06 18:49
VictorTom:自己換算時方便的base, 對電腦來說是一樣的; 會不同的是 07/06 18:50
VictorTom:數值或文字, Ex: int c=3; 與 int c='3'; c為不同的值; 07/06 18:51
VictorTom:int c=15; int c=0xF; 這兩個結果的c值其實一模一樣.... 07/06 18:51
VictorTom:建議您把code直接貼出來, 感覺是輸出位數的問題....@_@" 07/06 18:52
VictorTom:順便一問, 正確的是指和什麼比?? UltraEdit等軟體比嗎? 07/06 18:55
※ 編輯: steven0315 來自: 124.8.4.139 (07/06 18:57)
steven0315:差不多與UltraEdit一樣,只是程式是老大丟給我參考的 07/06 18:58
steven0315:我把code貼上去了,麻煩指教一下了^^ 07/06 18:58
VictorTom:有點亂, 您要不要用置底的貼code網站貼看看; 另外剛想到 07/06 19:02
VictorTom:讀data有用unsigned type來讀/印嗎?? 印出一堆FF應該是 07/06 19:03
VictorTom:讀到數值在signed為負值的case, 用unsigned type應該可 07/06 19:03
VictorTom:以解決印出多餘的FF的數值; 但是亂碼的部份要再比比看@@ 07/06 19:04
※ 編輯: steven0315 來自: 124.8.4.139 (07/06 19:08)
joefaq:printf("%02X ", client.ch[i]&0xff ); 試試 07/06 19:07
steven0315:我把code貼上網了..在內文 07/06 19:08
steven0315:printf("%02X ", client.ch[i]&0xff );16進制可以了耶! 07/06 19:12
VictorTom:&0xFF可以是因為把負值的high bit & 掉了吧?? 看起來 07/06 19:13
steven0315:但ASCII還是有亂碼出現 07/06 19:13
VictorTom:ch[i]是char型態, 其實應該換成unsigned char也可以@_@" 07/06 19:14
VictorTom:ASCII會有亂碼是看OS語系的關係吧?? 我用UE開個binary也 07/06 19:14
VictorTom:難免會有亂碼啊@_@" 07/06 19:15
VictorTom:另外, index = index++; 這一行應該會有問題....XD 07/06 19:23
VictorTom:把上面這個index修掉, 與ch[]用unsigned char宣告, 應該 07/06 19:24
VictorTom:就OK了, 至少這邊用Dev-C++測過, 看起來都沒問題了:) 07/06 19:25
steven0315:太感謝了..我再照上面的翻翻書研究一下 07/06 23:49