Re: [問題] ASCII和HEX互轉

看板C_and_CPP (C/C++)作者 (謎之聲)時間16年前 (2009/12/07 14:22), 編輯推噓4(4012)
留言16則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《CliffFitter (謎之聲)》之銘言: : 我想要寫HEX範圍從00~FF轉ASCII的程式和ASCII再轉換回HEX的程式 : EX:61(Hex) -> a(ASCII) -> 61(Hex) : 兩個都要存成文字檔 : ASCII轉換回HEX的方法是把字元用十六進位方式印出來 : fprintf(dPtr, "%x", Ascii); : 我發現當HEX為80以上時 : ASCII轉回Hex就會多印6個f 爬文也沒有人問過這個問題 : EX:80(Hex) -> ?(ASCII) -> ffffff80(Hex) : 在.exe沒有 但是在文字檔會出現 : 請問那6個f是怎麼出現的 要怎麼刪掉呢? 從00到ff測試後 突然發現0a(Hex)轉完後印不出來 0a是換行的意思吧? 不過也是換行的0d卻印的出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.177.216

12/07 14:28, , 1F
MS Win下, 一個是return, 一個是new line, 所以一個會把
12/07 14:28, 1F

12/07 14:29, , 2F
游標移回頭, 另一個會往下移, 至於0x0A/0D哪個是哪個就
12/07 14:29, 2F

12/07 14:29, , 3F
記不是很清楚了....@_@"
12/07 14:29, 3F

12/07 14:33, , 4F
ASCII的return有辦法轉成HEX嗎?
12/07 14:33, 4F

12/07 14:42, , 5F
剛測了一下, 0A是newline, 0D是return, 我不明白你的印
12/07 14:42, 5F

12/07 14:43, , 6F
不出來是怎樣, 也不太懂你是要拿什麼轉成HEX....Orz
12/07 14:43, 6F

12/07 14:54, , 7F
簡單來說就是:文字檔(HEX)->文字檔(ASC)->文字檔(HEX)
12/07 14:54, 7F

12/07 14:55, , 8F
但是遇到0a 0a和之後的都印不出來了
12/07 14:55, 8F

12/07 15:11, , 9F
我自己試是0D 0A裡, fgetc取回的是0A, 0D才印不出來,
12/07 15:11, 9F

12/07 15:12, , 10F
fopen改用binary模式開檔, 就可以把0D 0A都印出來了@_@"
12/07 15:12, 10F

12/07 15:36, , 11F
輸入0A 輸出變0A0D兩個 輸入0D沒問題
12/07 15:36, 11F

12/07 15:47, , 12F
所以你是把ASCII從00~FF都印進檔案, 然後再read回來??
12/07 15:47, 12F

12/07 15:48, , 13F
那請都用binary模式寫檔與讀檔, 在Win下面, 印'\n'會自
12/07 15:48, 13F

12/07 15:49, , 14F
己幫你補'\r'(在txt模式), 所以你印'\n'==0x0A總是會被
12/07 15:49, 14F

12/07 15:50, , 15F
多補一個'\r'==0x0D出來; 用binary模式就沒有這個問題.
12/07 15:50, 15F

12/07 17:01, , 16F
那怎麼用binary來開呢? @ @
12/07 17:01, 16F
文章代碼(AID): #1B79ynZG (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1B79ynZG (C_and_CPP)