python 字节流字符串转成list python字节流转为数组 |
您所在的位置:网站首页 › byte数组转成字符串在线转换 › python 字节流字符串转成list python字节流转为数组 |
bytes>>> type(b'xxxxx')
>>> type('xxxxx')
bytes是byte的序列,而str是unicode的序列。
1、str 转换成 bytes 用 encode() 方法:(注意:这有个坑,str1.encode不加括号和加括号是不一样的,自己试试,初学貌似2.0不影响,3.0变了,不加括号开发环境语法不报错) str = '人生苦短,我用Python!' bytes = str.encode() print(bytes)输出: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'2、好了,反转换 decode() : bytes = b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!' str = bytes.decode() print(str)输出: 人生苦短,我用Python!bytearray1、bytearray和bytes不一样的地方在于,bytearray是可变的。 str = '人生苦短,我用Python!' bytes = bytearray(str.encode()) bytes = bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!') str = bytes.decode() print(str)输出: '人生苦短,我用Python!'2、改变bytearray bytes[:6] = bytearray('生命'.encode()) bytes = bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!') str = bytes.decode() print(str)输出: 生命苦短,我用Python!各种 bytes : a = bytes('abc', 'utf-8') print(a) > b'abc' b = bytes(1) print(b) > b'\x00' c = bytes([2,3,6,8]) print(c) > b'\x02\x03\x06\x08' print(b"Python") > b'Python' python = (b'P' b'y' b"t" b'o' b'n') print(python) > b'Pyton'
Bytes 代表的是(二进制)数字的序列,只不过在是通过 ASCII 编码之后才是我们看到的字符形式,如果我们单独取出一个字节,它仍然是一个数字: print(b"Python"[0]) > 80我们可以用 b"*" 的形式创建一个字节类型,前提条件是这里的 * 必须是 ASCII 中可用的字符,否则将会超出限制: print(b"雨") > File "", line 1 print(b"雨") ^ SyntaxError: bytes can only contain ASCII literal characters.错误提示说明:字节类型只能允许 ASCII 字符(0~127~255)。ASCII 表里面所有的字符只占据了 [31, 127] 那对于这一范围之外的数字我们要怎么才能表示为字节类型?答案就是用特殊的转义符号x+十六进制数字 : print(b'xff'[0]) > 255 print(b'x24') > b'$'反过来我们也可以将数字(0~255)转变成转义后的字节类型: print(bytes([24])) > b'x18' print(bytes([36,36,36])) # 记住字节类型是一个序列或者直接从十六进制得来: print(bytes.fromhex("7b 7d")) > b'{}' # 逆运算 print(b'{ }'.hex()) > 7b207d int(b' '.hex(), base=16) > 32测试的一些代码: print("$".encode('ascii')) > b'$' print("$".encode('ascii')[0]) > 36 ba = bytearray(b'hello') ba[0:1] = b'w' print(ba) bytearray(b'wello')可是如果我们对一些奇怪的字符进行 ASCII 编码,就会发生异常:ordinal not in range(128)
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |