新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 對輸入的字符進行十六進制轉十進制處理

        對輸入的字符進行十六進制轉十進制處理

        作者: 時間:2016-11-28 來源:網絡 收藏
        若是程序里的變量,直接用printf就可以對進制進行轉換(%d %x %o等)。假如是對輸入的字符進行進制轉換,則要復雜一點。
        想實現的目的是:對多個(理論對字符數設的上限是1000)輸入的0(零)x或0X開頭的十六進制轉換為十進制輸出。
        我是分成以下幾個步驟:
        1.對行輸入用數組s進行保存。(對這種輸入處理,已經開始習慣先保存再處理的方式)
        2.識別0x和0X標識。
        3.以標識作為開始標志,空格作為結束標志,單獨提取、計算、保存每一個輸入位,轉為十進制存入數組u。
        4.為了方便計算,把u逆順序保存為數組v(因為進制運算低位在右,但是數組順序相反)。
        5.按照(16^0)*n + (16^1)*m……的算法求出一組輸入的十進制值(m、n為單個十六進制數轉換成的十進制數),余下組以循環求得。
        字符轉十進制整數基于ASCII碼(American Standard Code for Information Interchange全稱方便記憶):


        程序





        執行(為了顯示數組順序,最后一組不夠長截圖):

        總結:
        1.C里面沒有^這個運算符(實際上這是“位與”的位運算),不能直接寫16^l。必須用里面的double pow(double x, double y);來求x的y次方,但同時,編譯需要加入-lm選項:
        #gcc htoi.c -lm -o htoi (順序不能亂)
        2.計算方法弄清楚之后,對于邏輯順序問題,必須要寫寫畫畫。單憑腦子思考,很容易混亂。
        3.程序里的變量名字太過簡單,大程序要注意要嚴謹。還有省略了防御代碼,對非法的輸入格式沒有任何防御。
        4.豬腦,用了那么多t,u,v不如用容易理解的數組名……


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 三门峡市| 伊宁市| 新龙县| 黔南| 淳安县| 凯里市| 杭锦后旗| 左云县| 松阳县| 克什克腾旗| 田林县| 双牌县| 吉安县| 富裕县| 隆德县| 靖西县| 新泰市| 平阴县| 边坝县| 乌拉特前旗| 宣威市| 克什克腾旗| 德庆县| 明水县| 宾阳县| 出国| 武清区| 长岛县| 寿宁县| 鄂州市| 兴国县| 淮阳县| 会宁县| 平顶山市| 遂宁市| 玛曲县| 安乡县| 肇东市| 玉树县| 米泉市| 临沂市|