从Python 2.7到Python 3.5的端口取消固定
我不熟悉Python,需要从2.7移植到3.5。 在2.7中: 在第3.5条中:从Python 2.7到Python 3.5的端口取消固定,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我不熟悉Python,需要从2.7移植到3.5。 在2.7中: 在第3.5条中: >>> unhexlify( '2FE2' )[0] 47 我试过使用: >>> str(unhexlify( '2FE2' ))[0] 'b' 或: 我就是找不到正确的ascii码。我碰到了Python使用的表示:b'。。。还是总是得到一个整数 感谢unexlify返回一个字节对象,索引到字节对象会在Python 3中生成一个整数(一个字节对象包含一个范围为0-255的整数
>>> unhexlify( '2FE2' )[0]
47
我试过使用:
>>> str(unhexlify( '2FE2' ))[0]
'b'
或:
我就是找不到正确的ascii码。我碰到了Python使用的表示:b'。。。还是总是得到一个整数
感谢
unexlify
返回一个字节
对象,索引到字节
对象会在Python 3中生成一个整数(一个字节
对象包含一个范围为0-255的整数序列)
如果要获取另一个字节
对象,请改用切片:
unhexlify('2FE')[:1]
这在Python2和Python3中都可以使用。在我看来,Python3在对象中添加了索引0上的“type”,因此标识字节数组的“b”。我的理解正确吗?如果是这样,为什么,对我来说毫无意义。切片只是删除“b”?我是confused@TheSingularity_:您对字符串文字符号感到困惑。您可以使用
b'…'
文字符号创建bytes
对象,这样字节([102111111])
和b'foo'
产生相同的值。当您在这样一个对象上使用repr()
或str()
时(或者在Python交互式解释器中回显它,或者在一个对象上使用print()
分别使用repr()
和str()
时),Python会再次为您生成b'..
语法,以便您可以轻松地重现该值。只要复制输出,将其粘贴到Python代码中,您就又得到了同样的东西。@the奇异性:不过,这就是语法。切片工作在值上,而不是语法上。b
和引号不是该值的一部分。因此,bytesobject[:1]
将创建一个新的bytes
对象,其中的字节由切片指示。对于返回b'f'
的b'foo'
,第一个字节。@the奇异性:还有一些其他字符串文字符号使用不同的前缀,请参阅。
>>> bytes.fromhex('2FE2')[0]
47
>>> decode_hex('2FE2')[0][0]
47
unhexlify('2FE')[:1]