作者CliffFitter (谜之声)
看板C_and_CPP
标题Re: [问题] ASCII和HEX互转
时间Mon Dec 7 14:22:39 2009
※ 引述《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
1F:推 VictorTom:MS Win下, 一个是return, 一个是new line, 所以一个会把 12/07 14:28
2F:→ VictorTom:游标移回头, 另一个会往下移, 至於0x0A/0D哪个是哪个就 12/07 14:29
3F:→ VictorTom:记不是很清楚了....@_@" 12/07 14:29
4F:→ CliffFitter:ASCII的return有办法转成HEX吗? 12/07 14:33
5F:推 VictorTom:刚测了一下, 0A是newline, 0D是return, 我不明白你的印 12/07 14:42
6F:→ VictorTom:不出来是怎样, 也不太懂你是要拿什麽转成HEX....Orz 12/07 14:43
7F:→ CliffFitter:简单来说就是:文字档(HEX)->文字档(ASC)->文字档(HEX) 12/07 14:54
8F:→ CliffFitter:但是遇到0a 0a和之後的都印不出来了 12/07 14:55
9F:推 VictorTom:我自己试是0D 0A里, fgetc取回的是0A, 0D才印不出来, 12/07 15:11
10F:→ VictorTom:fopen改用binary模式开档, 就可以把0D 0A都印出来了@_@" 12/07 15:12
11F:→ CliffFitter:输入0A 输出变0A0D两个 输入0D没问题 12/07 15:36
12F:推 VictorTom:所以你是把ASCII从00~FF都印进档案, 然後再read回来?? 12/07 15:47
13F:→ VictorTom:那请都用binary模式写档与读档, 在Win下面, 印'\n'会自 12/07 15:48
14F:→ VictorTom:己帮你补'\r'(在txt模式), 所以你印'\n'==0x0A总是会被 12/07 15:49
15F:→ VictorTom:多补一个'\r'==0x0D出来; 用binary模式就没有这个问题. 12/07 15:50
16F:→ CliffFitter:那怎麽用binary来开呢? @ @ 12/07 17:01