Python的编码转换

会写这一篇是因为Python的各种编码转换实在是太烦了!太烦了!一遇到中文,还有各种字符转换简直让人头大,爬虫5分钟,转码两小时。然后打CTF又老是遇到十六进制各种转,我自己又记不住。。。所以写这篇来记一下。

中文编码转换

首先是令人头疼的中文问题,我的IDE默认是ANSI格式编码,Windows控制台默认是GBK。所以每次我一弄中文就各种无法识别。
一般来说把py文件改成utf8都是在头部加

# -*- codin: utf-8 -*-

当然有时候这招不管用,我就在头部加上

import sys
reload(sys)
sys.setdefaultencoding('utf8')

当然有时候这招还是不管用,我就会给所有的字符串加上

s=u'abcd'
s='abcd'.decode('utf8')

当然有时候会在编辑器里出现中文,例如需要查找,这时候我就会把编辑器的所有编码在设置里改成utf8。
基本我所有遇到的中文字符编码格式这样都可以解决了,如果以后遇到其他情况再继续更新。
阿门,愿我一路走好,愿世上只有一个字符集。

字符串与各种进制转换

二进制、八进制、十进制、十六进制互相转换

数字之间的各种转换只需要记住统统转成十进制再转即可,转十进制就记住int(s,位数)

a=int('11001101',2)#二进制转十进制
a=int('04513764',8)#八进制转十进制
a=int('132adcf84',16)#十六进制转十进制,加不加0x无所谓

十进制转其他进制

a=bin(05651651)#十进制转二进制,注意这里是数字不是字符串
a=oct(31565165)#十进制转八进制
a=hex(1623051165)#十进制转十六进制
字符串与整数之间的转换

一般来说都是ACSII字符串转十六进制字符串,如果要转其他进制参考上方

a='absdfa35'
s=a.encode('hex')#ASCII字符串转十六进制
s.decode('hex')#十六进制转ASCII字符串

如果十六进制是数字的话,那可以用

import libnum
a=0x684898498
libnum.n2s(a)

好像我平时就用这些,如果有遇到其他的再补充吧

你可能感兴趣的:(Python的编码转换)