当前位置: 首页 > 后端技术 > Python

关于Python3编码(qbit)

时间:2023-03-26 12:51:06 Python

Python3中str与bytes的转换Python3中bytes/str二分法本文内容针对Python3.8适用字符与Unicode数字之间的转换。字符转Unicode数字>>>ord('A')65>>>hex(ord('A'))'0x41'>>>ord('You')20320>>>hex(ord('You'))'0x4f60'>>>'Hello'.encode('unicode_escape')b'\\u4f60\\u597d'Unicode数字转义字符>>>chr(65)'A'>>>chr(0x41)'A'>>>chr(20320)'你'>>>chr(0x4f60)'你'>>>b'\\u4f60\\u597d'.decode(('unicode_escape'))'你好'>>>print(b'\\u4f60\\u597d')b'\\u4f60\\u597d'>>>print(u'\u4f60\u597d')hello汉字与gbk十六进制/二进制的转换#汉字转十六进制>>>'hello'.encode('gbk')b'\xc4\xe3\xba\xc3'#十六进制转汉字>>>b'\xc4\xe3\xba\xc3'.decode('gbk')'hello'#汉字转十六进制字符串>>>''.join(['%02X'%xforxin'Hello'.encode('gbk')]).strip()'C4E3BAC3'>>>''.join(['%02X'%xforxin'Hello'.encode('gbk')]).strip()'C4E3BAC3'>>>binascii.b2a_hex('Hello'.encode('gbk')).upper().decode('gbk')'C4E3BAC3'>>>'Hello'.encode('gbk').hex('').upper()'C4E3BAC3'#十六进制字符串转汉字>>>bytes.fromhex('C4E3BAC3').decode('gbk')'hello'>>>bytes.fromhex('C4E3BAC3').decode('gbk')'hello'numberwithhexsystems之间的转换#Numbertohexadecimalstring>>>hex(21)'0x15'>>>hex(21)[2:]'15'#十六进制字符串转数字>>>int('0x15',16)21>>>int('15',16)21数字与八进制的转换#数字转八进制字符串>>>oct(21)'0o25'>>>oct(21)[2:]'25'#八进制字符串转数字>>>int('0o25',8)21>>>int('25',8)21数字与二进制的转换#将数字转换为二进制字符String>>>bin(5)'0b101'>>>bin(5)[2:]'101'#将二进制字符串转换为数字>>>int('0b101',2)5>>>int('101',2)5bytesrelated#bytesobjecttohexadecimalstring>>>"%02X"%ord(b'\xff')'FF'>>>b'\xff'.hex().upper()'FF'>>>''.join(["%02X"%iforiinb'\xe4\xbd\xa0\xe5\xa5\xbd'])'E4BDA0E5A5BD'>>>b'\xe4\xbd\xa0\xe5\xa5\xbd'.hex().upper()'E4BDA0E5A5BD'#生成32字节十六进制随机字符串(不可预测)>>>''.join(["%02x"%iforiinos.urandom(32)])2f15c8cc8852bf3e094bf3fa19fe0a6e1b3ba8d13b8c129f5f29fcf1ac968750#bytestoint>>>ord(b'\xff')255#inttobytes>>>bytes([255])b'\xff'bit需要使用第三方包bitarray#Stringto01string(defaultendianisbigendian)>>>arr=bitarray()>>>arr.frombytes('Hello'.encode('utf8'))>>>arr.to01()'111001001011110110100000111001011010010110111101'#01串转字符串>>>bitarray('111001001011110110100000111001011010010110111101').tobytes().decode('utf8')'你好'关于utf8的bom头>>>importcodecs>>>codecs.BOM_UTF8b'\xef\xbb\xbf'>>>len(b'\xef\xbb\xbf')3>>>codecs.BOM_UTF8.decode('utf8')'\ufeff'>>>len('\ufeff')1Python3内置编码Python3有哪些编码:StandardEncodings,PythonSpecificEncodings打印编码和别名:获取Python可以编码的所有编码列表>>>fromencodings.aliasesimportaliases>>>forkinaliases:print('%s:%s'%(k,aliases[k]))验证编码是否有效>>>importcodecs>>>codecs.lookup('utf8')#valid>>>codecs.lookup('utf-;8')#valid>>>codecs.lookup('utf88')#invalidTraceback(最近调用last):文件“”,第1行,在codecs.lookup('utf88')LookupError:unknownencoding:utf88standardizedencoding>>>importencodings>>>encodings.normalize_encoding('utf-;8')'utf_8'对应的C代码为:unicodeobject.c中的\_Py\_normalize\_encoding函数。sys/locale模块中与编码相关的方法。(Python字符编码详解)importsysimportlocale#当前系统使用的默认字符编码>>>sys.getdefaultencoding()'utf-8'#用于将Unicode文件名转换为系统文件名的编码>>>sys.getfilesystemencoding()'utf-8'#获取默认locale并返回一个元组(language,encoding)>>>locale.getdefaultlocale()('zh_CN','cp936')#返回用户设置的文本数据编码#文档中提到这个函数只返回一个guess>>>locale.getpreferredencoding()'cp936'stringinversion>>>line='0123456789'>>>line[::-1]'9876543210'本文来自qbitsnap