我试图在Python 3中构建这个字节对象:
b'3\r\n'
所以我尝试了显而易见的(对我来说),并发现了一个奇怪的行为:
>>> bytes(3) + b'\r\n'
b'\x00\x00\x00\r\n'
Run Code Online (Sandbox Code Playgroud)
显然:
>>> bytes(10)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)
我一直无法看到任何关于为什么字节转换以这种方式阅读文档的指针.但是,我确实在Python问题中发现了一些关于添加format字节的惊喜消息(另请参阅Python 3字节格式化):
http://bugs.python.org/issue3982
这与奇怪的事情(如字节(int)现在返回零)的交互更加糟糕
和:
如果bytes(int)返回该int的ASCIIfication,对我来说会更方便; 但老实说,即使错误也会比这种行为更好.(如果我想要这种行为 - 我从来没有 - 我宁愿它是一个类方法,调用类似"bytes.zeroes(n)".)
有人可以解释一下这种行为来自哪里?