先來(lái)看下十六進(jìn)制的定義以及表示方式,以下是百度百科上的解釋:
十六進(jìn)制(簡(jiǎn)寫為hex或下標(biāo)16)是一種基數(shù)為16的計(jì)數(shù)系統(tǒng),是一種逢16進(jìn)1的進(jìn)位制。通常用數(shù)字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,這些稱作十六進(jìn)制數(shù)字。
不同電腦系統(tǒng)、編程語(yǔ)言對(duì)于16進(jìn)制數(shù)值有不同的表示方式:
C語(yǔ)言、C++、Shell、Python、Java語(yǔ)言及其他相近的語(yǔ)言使用字首“0x”,例如“0x5A3”。開(kāi)頭的“0”令解析器更易辨認(rèn)數(shù),而“x”則代表十六進(jìn)制(就如“O”代表八進(jìn)制)。在“0x”中的“x”可以大寫或小寫。對(duì)于字符量C語(yǔ)言中則以x+兩位十六進(jìn)制數(shù)的方式表示,如xFF。
十六進(jìn)制怎么轉(zhuǎn)換成十進(jìn)制?
16進(jìn)制數(shù)的第0位的權(quán)值為16的0次方,第1位的權(quán)值為16的1次方,第2位的權(quán)值為16的2次方……
所以,在第N(N從0開(kāi)始)位上,如果是是數(shù)X(0 <= X <= 15,即:F)表示的大小為 X*16的N次方。
例:0xAA換算成十進(jìn)制:
第0位:A * 16^0 = 10 * 1 = 10
第1位:A *?16^1 = 10 * 16 = 160
所以,十六進(jìn)制的數(shù)0xAA轉(zhuǎn)換成十六進(jìn)制的數(shù)后就等于 10+160 = 170
在python中,自帶了十六進(jìn)制轉(zhuǎn)十進(jìn)制的庫(kù)函數(shù):int(string, base = 16)
輸出結(jié)果如下:
如果不使用python自帶的庫(kù)函數(shù),自己寫一個(gè)方法來(lái)實(shí)現(xiàn)十六進(jìn)制轉(zhuǎn)十進(jìn)制,該怎么實(shí)現(xiàn)呢?
思路同?python實(shí)現(xiàn)字符串轉(zhuǎn)int
將0~9, A~F這16個(gè)數(shù)以字典的方式存儲(chǔ)起來(lái),key為字符類型,value為其對(duì)應(yīng)的int類型
dict_ = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15}
然后用for循環(huán)遍歷目標(biāo)字符串,若字符串中的字符不在0~9, A~F這16個(gè)數(shù)中,那么就無(wú)法轉(zhuǎn)成十進(jìn)制,直接返回False,若字符串中的字符在0~9, A~F這16個(gè)數(shù)中,說(shuō)明可以轉(zhuǎn)成十進(jìn)制,將字典中字符對(duì)應(yīng)的int類型的值取出進(jìn)行數(shù)學(xué)計(jì)算。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-418428.html
?運(yùn)行后結(jié)果同上。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-418428.html
到了這里,關(guān)于python實(shí)現(xiàn)十六進(jìn)制轉(zhuǎn)十進(jìn)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!