Convertendo int em bytes no Python 3
Eu estava tentando criar esse objeto de bytes no Python 3:
b'3\r\n'
então eu tentei o óbvio (para mim) e encontrei um comportamento estranho:
>>> bytes(3) + b'\r\n'
b'\x00\x00\x00\r\n'
Pelo visto:
>>> bytes(10)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Não consegui ver nenhum ponteiro sobre por que a conversão de bytes funciona dessa maneira, lendo a documentação. No entanto, encontrei algumas mensagens surpresas nesta edição do Python sobre como adicionarformat
em bytes (veja tambémFormatação Python de 3 bytes):
http://bugs.python.org/issue3982
Isso interage ainda mais mal com esquisitices como bytes (int) retornando zeros agora
e:
Seria muito mais conveniente para mim se bytes (int) retornassem a ASCIIfication desse int; mas, honestamente, até um erro seria melhor que esse comportamento. (Se eu quisesse esse comportamento - o que nunca tive - prefiro que seja um método de classe, invocado como "bytes.zeroes (n)").
Alguém pode me explicar de onde vem esse comportamento?