[問題] ASCII和HEX互轉

看板C_and_CPP作者 (謎之聲)時間14年前 (2009/12/05 17:46), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/2 (看更多)
我想要寫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是怎麼出現的 要怎麼刪掉呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.177.216

12/05 18:20, , 1F
Ascii 要宣告成 unsigned char
12/05 18:20, 1F

12/05 18:49, , 2F
或者也可以加 & 0xff 就消掉啦
12/05 18:49, 2F

12/06 13:28, , 3F
所以是因為最前面的bit是1所以被當作負數囉
12/06 13:28, 3F

12/06 13:29, , 4F
問題解決了 感謝
12/06 13:29, 4F

12/06 15:54, , 5F
是因為低位轉高位, 有號數會做 signed extension.
12/06 15:54, 5F
文章代碼(AID): #1B6Ym08U (C_and_CPP)
文章代碼(AID): #1B6Ym08U (C_and_CPP)