Я пытался создать этот байтовый объект в Python 3:
b'3\r\n'
поэтому я попробовал очевидное (для меня) и нашел странное поведение:
>>> bytes(3) + b'\r\n'
b'\x00\x00\x00\r\n'
По-видимому:
>>> bytes(10)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Мне не удалось увидеть никаких указателей на то, почему преобразование байтов работает таким образом, считывая документацию. Однако в этой проблеме Python я обнаружил некоторые неожиданные сообщения о добавлении format
в байты (см. Также Форматирование 3 байта Python):
http://bugs.python.org/issue3982
Это взаимодействует еще хуже с такими странностями, как bytes (int), возвращающими нули сейчас
и
Мне было бы гораздо удобнее, если бы байты (int) вернули ASCII-идентификацию этого int; но, честно говоря, даже ошибка была бы лучше, чем такое поведение. (Если бы я хотел этого поведения, чего у меня никогда не было, я бы предпочел, чтобы это был классный метод, вызывается как "bytes.zeroes(n)".)
Может кто-нибудь объяснить мне, откуда это происходит?