标签:nic 很多 关系 长度 www utf-8 imp 不可 标记
>>> s = ‘café‘ >>> len(s) # ? 4 >>> b = s.encode(‘utf8‘) # ? >>> b b‘caf\xc3\xa9‘ # ? >>> len(b) # ? 5 >>> b.decode(‘utf8‘) # ? ‘café
如果想帮助自己记住 .decode() 和 .encode() 的区别,可以把字节序列想成晦涩难懂的机器磁芯转储,把 Unicode 字符串想成“人类可读”的文本。那么,把字节序列变成人类可读的文本字符串就是解码,而把字符串变成用于存储或传输的字节序列就是编码。
>>> cafe = bytes(‘café‘, encoding=‘utf_8‘) ? >>> cafe b‘caf\xc3\xa9‘ >>> cafe[0] ? 99 >>> cafe[:1] ? b‘c‘ >>> cafe_arr = bytearray(cafe) >>> cafe_arr ? bytearray(b‘caf\xc3\xa9‘) >>> cafe_arr[-1:] ? bytearray(b‘\xa9‘)
my_bytes[0] 获取的是一个整数,而 my_bytes[:1] 返回的是一个长度为 1 的 bytes 对象——这一点应该不会让人意外。s[0] == s[:1] 只对 str 这个序列类型成立。不过,str 类型的这个行为十分罕见。对其他各个序列类型来说,s[i] 返回一个元素,而 s[i:i+1] 返回一个相同类型的序列,里面是 s[i] 元素。
>>> bytes.fromhex(‘31 4B CE A9‘) b‘1K\xce\xa9‘
>>> import struct >>> fmt = ‘<3s3sHH‘ # ? >>> with open(‘filter.gif‘, ‘rb‘) as fp: ... img = memoryview(fp.read()) # ? ... >>> header = img[:10] # ? >>> bytes(header) # ? b‘GIF89a+\x02\xe6\x00‘ >>> struct.unpack(fmt, header) # ? (b‘GIF‘, b‘89a‘, 555, 230) >>> del header # ? >>> del img
标签:nic 很多 关系 长度 www utf-8 imp 不可 标记
原文地址:https://www.cnblogs.com/xiangxiaolin/p/11599518.html