python進(jìn)制轉(zhuǎn)換函數(shù) python中進(jìn)制轉(zhuǎn)化函數(shù)

關(guān)于python如何實(shí)現(xiàn)各進(jìn)制轉(zhuǎn)換的總結(jié)大全

ctf經(jīng)常遇到進(jìn)制轉(zhuǎn)換的問題,就正好做一個進(jìn)制轉(zhuǎn)換總結(jié),分享出來供大家參考學(xué)習(xí),下面來一起看看詳細(xì)的介紹:

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)萬年,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

字符串與十六進(jìn)制轉(zhuǎn)換

例如百度ctf 12月的第二場第一個misc

?

1

666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D

比較簡單的一種做法就是直接調(diào)用字符串的.decode('hex')解密即可, 但如果不用這個函數(shù)你會怎么解呢?

一種思路就是先2個分組,解出每組的ascii值,合并下字符串即可得到,具體代碼如下

?

1234567

import res='666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D's = re.findall(r'.{2}',s)s = map(lambda x:chr(int(x,16)),s)print ''.join(s)flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}

前面說了字符串的decode('hex')函數(shù),另外還有兩個轉(zhuǎn)16進(jìn)制的函數(shù),這里都總結(jié)一下

內(nèi)置函數(shù)hex()

只能轉(zhuǎn)換10進(jìn)制整數(shù)為十六進(jìn)制,不能轉(zhuǎn)字符串

binascii庫的hexlify()和b2a_hex()

這兩個函數(shù)的功能是將字符串轉(zhuǎn)換成十六進(jìn)制,對應(yīng)的解密函數(shù)分別為 unhexlify()和a2b_hex()

進(jìn)制互轉(zhuǎn)

二進(jìn)制,八進(jìn)制,十六進(jìn)制轉(zhuǎn)10進(jìn)制比較簡單,直接調(diào)用

int函數(shù)

?

1

int(str,base) //返回十進(jìn)制整數(shù),但注意此時第一個參數(shù)為字符串

對應(yīng)的解密函數(shù)分別是

?

12345

bin() //10進(jìn)制轉(zhuǎn)二進(jìn)制 oct() //十進(jìn)制轉(zhuǎn)八進(jìn)制 hex() //十進(jìn)制轉(zhuǎn)十六進(jìn)制

但二進(jìn)制直接轉(zhuǎn)16進(jìn)制就需要多走一步了,先用int轉(zhuǎn)十進(jìn)制,在用上面提到的hex()函數(shù)將十進(jìn)制轉(zhuǎn)換成十六進(jìn)制,比較精簡的寫法是

?

1

map(lambda x:hex(int(x,2)),['0011']) //lambda表達(dá)式

或者是

?

1

[hex(int(x,2)) for x in ['0011']] //列表解析

對應(yīng)的解密函數(shù)就是

?

1

map(lambda x:bin(int(x,16)),['ef'])

最后在附上自己用python寫的一個進(jìn)制轉(zhuǎn)換小工具,主要功能是對一組二進(jìn)制,或者ascii,或十六進(jìn)制轉(zhuǎn)換成字符串,想必ctf上也經(jīng)常會遇到這類題型吧

?

1234567891011121314151617181920212223242526272829303132333435363738394041424344

# make by 江sir#coding:utf-8import reimport argparse def bintostr(text): text = text.replace(' ','') text = re.findall(r'.{8}',text) s = map(lambda x:chr(int(x,2)),text) #批量二進(jìn)制轉(zhuǎn)十進(jìn)制 flag = ''.join(s) return flag def asciitostr(text): if ' ' in text: text = text.split(' ') elif ',' in text: text = text.split(',') s = map(lambda x:chr(int(x)),text) flag = ''.join(s) return flag def hextostr(text): text = re.findall(r'.{2}',text) #print text s = map(lambda x:chr(int(x,16)),text) #print s flag = ''.join(s) return flag if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-b") parser.add_argument("-a") parser.add_argument("-x") argv = parser.parse_args() #print argv if argv.b: res = bintostr(argv.b) elif argv.a: res = asciitostr(argv.a) elif argv.x: res = hextostr(argv.x) print res

用法:

十六進(jìn)制轉(zhuǎn)字符串:

666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D

?

12

bintostr.py -x "666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D"flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}

二進(jìn)制轉(zhuǎn)字符串:

可以有空格,也可以無空格

00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100

?

12

bintostr.py -b "00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100"/f6732410aadc037fb0cbaa00c7531373.txt

ascii轉(zhuǎn)字符串

可以是空格分隔,也可以是,分隔

s='45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32'

?

12

bintostr.py -a "45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32"-.-. - ..-. .-.. ... -... ..--.- -... ... .-..

以上實(shí)例均來自某些ctf賽題

總結(jié)

十進(jìn)制轉(zhuǎn)二進(jìn)制代碼python

bin( )函數(shù)可以把整數(shù)轉(zhuǎn)換為二進(jìn)制

num=23

print(bin(num))

oct可以把整數(shù)轉(zhuǎn)換為八進(jìn)制。

num=77

print(otc(num))

hex可以把十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制

num=77

print(hex(num))

int("001001", 2) 可以把二進(jìn)制轉(zhuǎn)換為十進(jìn)制。

001001是二進(jìn)制,記得要加上雙引號。

數(shù)字2表示"001001"為二進(jìn)制。如果輸入的不是二進(jìn)制數(shù)字就會報(bào)錯。

str=”001001”

print( int(str, 2 ))

怎樣用python進(jìn)行二進(jìn)制,八進(jìn)制,十進(jìn)制轉(zhuǎn)換

從二進(jìn)制轉(zhuǎn)換為十進(jìn)制有幾種方式

第一種是在二進(jìn)制數(shù)前加上0b,顯示時會自動轉(zhuǎn)換為十進(jìn)制,注意這并不是字符串

x = 0b1010print(x)

如果是字符串可以利用eval求值

x = eval('0b1010')

第二種是利用int函數(shù),字符串可以以0b為前綴,也可以不使用

int('1010',base=2)int('0b1010',2)

函數(shù)會將輸入base進(jìn)制的字符串轉(zhuǎn)換為十進(jìn)制

python中怎樣將十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制

#!/usr/bin/python# -*- coding:utf-8 -*-# @Time : 2018/6/19 10:20# @Author : # @File : Dec_To_Bin.py"""十進(jìn)制轉(zhuǎn)二進(jìn)制""" # 定義一個十進(jìn)制轉(zhuǎn)二進(jìn)制的函數(shù)def dec2bin(string_num): num = int(string_num) # 將傳入的字符串?dāng)?shù)字轉(zhuǎn)換成整型 mid = [] # 定義一個空列表 while True: # 循環(huán),條件為真時執(zhí)行 if num == 0: # 當(dāng)輸入值是0時,直接跳出循環(huán) break num, rem = divmod(num, 2) # 調(diào)用函數(shù)divmod,得到商num,和余數(shù)rem mid.append(rem) # 將余數(shù)存入列表 return ''.join([str(x) for x in mid[::-1]]) # 返回結(jié)果,列表取反后拼接成字符串 if __name__ == '__main__': anum = raw_input(u'請輸入要轉(zhuǎn)換的數(shù)字:') print u'該數(shù)字轉(zhuǎn)換為二進(jìn)制后是:{}'.format(dec2bin(anum))

分享文章:python進(jìn)制轉(zhuǎn)換函數(shù) python中進(jìn)制轉(zhuǎn)化函數(shù)
文章轉(zhuǎn)載:http://m.kartarina.com/article42/dodeoec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)網(wǎng)站導(dǎo)航網(wǎng)站改版響應(yīng)式網(wǎng)站用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
主站蜘蛛池模板: 国产成人无码精品久久久小说| 亚洲久热无码av中文字幕| 97无码免费人妻超级碰碰碰碰| 日韩少妇无码喷潮系列一二三| 免费无码又爽又刺激高潮| 日韩A无码AV一区二区三区| 亚洲动漫精品无码av天堂| 国产精品无码制服丝袜| 99国产精品无码| 日韩人妻无码精品久久免费一| 亚洲乱亚洲乱妇无码麻豆| 国内精品久久久久久无码不卡| 久久无码无码久久综合综合| 中文字幕无码免费久久| 无码国模国产在线无码精品国产自在久国产 | 大胆日本无码裸体日本动漫| 亚洲gv猛男gv无码男同短文| 国产免费AV片无码永久免费| 亚洲AV无码1区2区久久| 国产免费黄色无码视频| 国产精品亚洲а∨无码播放麻豆| 国产精品ⅴ无码大片在线看| 亚洲午夜无码AV毛片久久| 久久精品无码免费不卡| 久久中文字幕无码一区二区| 精品久久久无码人妻字幂| 无码精品A∨在线观看十八禁| 国产羞羞的视频在线观看 国产一级无码视频在线| 无码人妻丰满熟妇区96| 久久久久亚洲av无码专区蜜芽| 亚洲中文字幕伊人久久无码| 无码不卡亚洲成?人片| 伊人久久大香线蕉无码麻豆| 最新亚洲人成无码网站| 亚洲爆乳少妇无码激情| 国产精品热久久无码av| 国产高清无码毛片| 国产成人麻豆亚洲综合无码精品| 亚洲中文字幕伊人久久无码| 中文字幕乱码无码人妻系列蜜桃| 国产a级理论片无码老男人|