mes*_*shy 20 python python-3.x
我试图在python 3.4中获取字节串的第一个字符,但是当我将其编入索引时,我得到一个int
:
>>> my_bytes = b'just a byte string'
b'just a byte string'
>>> my_bytes[0]
106
>>> type(my_bytes[0])
<class 'int'>
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎不直观,正如我期待的那样b'j'
.
我发现我可以获得我期望的价值,但这对我来说感觉就像是一个黑客.
>>> my_bytes[0:1]
b'j'
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?
Mar*_*ers 18
该bytes
类型是二进制序列类型,并明确记录为包含0到255范围内的整数序列.
从文档:
字节对象是单个字节的不可变序列.
[...]
虽然字节文字和表示基于ASCII文本,但字节对象实际上表现为不可变的整数序列,序列中的每个值都被限制为
0 <= x < 256
[.][...]
由于字节对象是整数序列(类似于元组),对于字节对象
b
,b[0]
将是一个整数,而b[0:1]
将是bytes
长度为1 的对象.(这与文本字符串形成对比,其中索引和切片将产生一个字符串长度1).
大胆强调我的.注意,索引字符串在序列类型中有点异常; 'abc'[0]
给你一个str
长度为1 的物体; str
是唯一一个包含自己类型元素的序列类型.
这与其他语言如何处理字符串数据相呼应; 在C中,unsigned char
类型实际上也是0-255范围内的整数.unsigned
如果使用非限定char
类型,则许多C编译器默认使用,并且文本被建模为char[]
数组.
归档时间: |
|
查看次数: |
3092 次 |
最近记录: |