色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 對(duì)輸入的字符進(jìn)行十六進(jìn)制轉(zhuǎn)十進(jìn)制處理

          對(duì)輸入的字符進(jìn)行十六進(jìn)制轉(zhuǎn)十進(jìn)制處理

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


          程序





          執(zhí)行(為了顯示數(shù)組順序,最后一組不夠長(zhǎng)截圖):

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


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉