[問題] 字元陣列的元素,轉換成16進位

看板C_and_CPP (C/C++)作者 (超越自己)時間12年前 (2013/12/04 20:20), 編輯推噓2(2010)
留言12則, 9人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux C ----------------------------------------------------------------------- 各位板友大家好, 小弟目前的程式是採用輸入字元的方式,來讓系統判定下達什麼樣的指令,位址, 及指令內容。 目前是採用atoi()函數來將輸入字元(0~F<=這些字元我假定它們是16進位的數值) 轉換成數字,此數字再丟到自定的16進位副程式去做運算,得到16進位的數值.. 字元若是0~9的話,轉換出來並不會有問題,就會得到實際的數值(0~9), 但字元若是(A~F),則轉換出來會產生問題,並不會得到數值(10~15), 所以想請問板上的前輩們,是否有其他合適的函數呢!? 還請大家不吝回答,謝謝哦^^ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.42.70

12/04 20:26, , 1F
strtol 或是自己寫
12/04 20:26, 1F

12/04 22:23, , 2F
同理可証,沒道理0-9可以轉,A-F轉不出來
12/04 22:23, 2F

12/04 23:22, , 3F
http://codepad.org/5ajV1X0x 網路上有看到這種轉換
12/04 23:22, 3F

12/05 01:28, , 4F
char *str="abc12";unsigned hex;sscanf(str,"%x",&hex);
12/05 01:28, 4F

12/05 12:24, , 5F
scanf or sscanf or 自己寫
12/05 12:24, 5F

12/05 14:01, , 6F
不是還有老爛招switch寫16行嗎 :D
12/05 14:01, 6F

12/05 19:30, , 7F
要爛招的話 直接減去ACSII上的offset就好啦
12/05 19:30, 7F

12/05 22:25, , 8F
那不夠爛吧
12/05 22:25, 8F

12/05 22:25, , 9F
XDDDD
12/05 22:25, 9F

12/05 23:51, , 10F
要寫 21 個 case 喔因為還要兼顧大小寫!
12/05 23:51, 10F

12/05 23:51, , 11F
算錯了是 22 個 orz
12/05 23:51, 11F

12/08 23:25, , 12F
謝謝E大及各位..順利完成:D
12/08 23:25, 12F
文章代碼(AID): #1IdnuZVG (C_and_CPP)
文章代碼(AID): #1IdnuZVG (C_and_CPP)