3

考虑到类型bytes不一定是 string,如何才能看到bytes对象的实际字节(1 和 0,或此类的八进制/十六进制表示)?尝试print()pprint()这样的对象会导致打印对象的字符串表示形式(假设某些编码,可能是 ASCII 或 UTF-8),前面有b字符以指示数据类型实际上是字节:

$ python3
Python 3.2.3 (default, Oct 19 2012, 19:53:16) 
>>> from pprint import pprint
>>> s = 'hi'
>>> print(str(type(s)))
<class 'str'>
>>> se = s.encode('utf-8')
>>> print(str(type(se)))
<class 'bytes'>
>>> print(se)
b'hi'
>>> pprint(se)
b'hi'
>>>

请注意,我专门指的是 Python 3。谢谢!

4

3 回答 3

4

使用bin, octorhex并使用括号表示法访问字节:

>>> print(hex(se[0]))
0x68
>>> print(hex(se[1]))
0x69

显然一个循环会更好:

for a_byte in se:
    print (bin(a_byte))
于 2013-06-13T07:16:04.540 回答
2

使用Python 字符串格式显示字节的十六进制值:

>>> se = b'hi'
>>> ["{0:0>2X}".format(b) for b in se]
['68', '69']
于 2013-06-13T08:34:25.237 回答
-1
>>> s = b'hi'
>>> s
b'hi'
>>> print(s)
b'hi'
>>> for i in s:
    print(i)


104
105
>>> y = 'hi'
>>> for i in y:
    print(i)


h
i
>>> 
于 2017-03-19T11:04:02.900 回答