會(huì)寫(xiě)這一篇是因?yàn)镻ython的各種編碼轉(zhuǎn)換實(shí)在是太煩了进副!太煩了!一遇到中文悔常,還有各種字符轉(zhuǎn)換簡(jiǎn)直讓人頭大影斑,爬蟲(chóng)5分鐘,轉(zhuǎn)碼兩小時(shí)机打。然后打CTF又老是遇到十六進(jìn)制各種轉(zhuǎn)鸥昏,我自己又記不住。姐帚。吏垮。所以寫(xiě)這篇來(lái)記一下。
中文編碼轉(zhuǎn)換
首先是令人頭疼的中文問(wèn)題罐旗,我的IDE默認(rèn)是ANSI格式編碼膳汪,Windows控制臺(tái)默認(rèn)是GBK。所以每次我一弄中文就各種無(wú)法識(shí)別九秀。
一般來(lái)說(shuō)把py文件改成utf8都是在頭部加
# -*- codin: utf-8 -*-
當(dāng)然有時(shí)候這招不管用遗嗽,我就在頭部加上
import sys
reload(sys)
sys.setdefaultencoding('utf8')
當(dāng)然有時(shí)候這招還是不管用,我就會(huì)給所有的字符串加上
s=u'abcd'
s='abcd'.decode('utf8')
當(dāng)然有時(shí)候會(huì)在編輯器里出現(xiàn)中文鼓蜒,例如需要查找痹换,這時(shí)候我就會(huì)把編輯器的所有編碼在設(shè)置里改成utf8。
基本我所有遇到的中文字符編碼格式這樣都可以解決了都弹,如果以后遇到其他情況再繼續(xù)更新娇豫。
阿門(mén),愿我一路走好畅厢,愿世上只有一個(gè)字符集冯痢。
字符串與各種進(jìn)制轉(zhuǎn)換
二進(jìn)制、八進(jìn)制、十進(jìn)制浦楣、十六進(jìn)制互相轉(zhuǎn)換
數(shù)字之間的各種轉(zhuǎn)換只需要記住統(tǒng)統(tǒng)轉(zhuǎn)成十進(jìn)制再轉(zhuǎn)即可袖肥,轉(zhuǎn)十進(jìn)制就記住int(s,位數(shù))
a=int('11001101',2)#二進(jìn)制轉(zhuǎn)十進(jìn)制
a=int('04513764',8)#八進(jìn)制轉(zhuǎn)十進(jìn)制
a=int('132adcf84',16)#十六進(jìn)制轉(zhuǎn)十進(jìn)制,加不加0x無(wú)所謂
十進(jìn)制轉(zhuǎn)其他進(jìn)制
a=bin(05651651)#十進(jìn)制轉(zhuǎn)二進(jìn)制振劳,注意這里是數(shù)字不是字符串
a=oct(31565165)#十進(jìn)制轉(zhuǎn)八進(jìn)制
a=hex(1623051165)#十進(jìn)制轉(zhuǎn)十六進(jìn)制
字符串與整數(shù)之間的轉(zhuǎn)換
一般來(lái)說(shuō)都是ACSII字符串轉(zhuǎn)十六進(jìn)制字符串椎组,如果要轉(zhuǎn)其他進(jìn)制參考上方
a='absdfa35'
s=a.encode('hex')#ASCII字符串轉(zhuǎn)十六進(jìn)制
s.decode('hex')#十六進(jìn)制轉(zhuǎn)ASCII字符串
如果十六進(jìn)制是數(shù)字的話,那可以用
import libnum
a=0x684898498
libnum.n2s(a)
好像我平時(shí)就用這些历恐,如果有遇到其他的再補(bǔ)充吧