看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
VictorTom:MS Win下, 一個是return, 一個是new line, 所以一個會把 12/07 14:28
VictorTom:游標移回頭, 另一個會往下移, 至於0x0A/0D哪個是哪個就 12/07 14:29
VictorTom:記不是很清楚了....@_@" 12/07 14:29
CliffFitter:ASCII的return有辦法轉成HEX嗎? 12/07 14:33
VictorTom:剛測了一下, 0A是newline, 0D是return, 我不明白你的印 12/07 14:42
VictorTom:不出來是怎樣, 也不太懂你是要拿什麼轉成HEX....Orz 12/07 14:43
CliffFitter:簡單來說就是:文字檔(HEX)->文字檔(ASC)->文字檔(HEX) 12/07 14:54
CliffFitter:但是遇到0a 0a和之後的都印不出來了 12/07 14:55
VictorTom:我自己試是0D 0A裡, fgetc取回的是0A, 0D才印不出來, 12/07 15:11
VictorTom:fopen改用binary模式開檔, 就可以把0D 0A都印出來了@_@" 12/07 15:12
CliffFitter:輸入0A 輸出變0A0D兩個 輸入0D沒問題 12/07 15:36
VictorTom:所以你是把ASCII從00~FF都印進檔案, 然後再read回來?? 12/07 15:47
VictorTom:那請都用binary模式寫檔與讀檔, 在Win下面, 印'\n'會自 12/07 15:48
VictorTom:己幫你補'\r'(在txt模式), 所以你印'\n'==0x0A總是會被 12/07 15:49
VictorTom:多補一個'\r'==0x0D出來; 用binary模式就沒有這個問題. 12/07 15:50
CliffFitter:那怎麼用binary來開呢? @ @ 12/07 17:01