回答編集履歴

1 追記

can110

can110 score 29847

2019/01/14 06:50  投稿

端的にいえば`bytes`を文字列化する`__str__`や`__repr__`関数において
**byte値がASCII範囲内にあればASCIIで表現する**という動作仕様のためです。
値としてはb'A'もb`\x41`と同一です。
この動作は以下を実行することでも確認できます。
```Python
>>> b'\x41'
b'A' # \x41 とは出力されない!
```
詳細は以下の過去質問を参照ください。
また、上記の詳細およびバイト列、というより16進数表現文字列として出力する方法については、以下の過去質問を参照ください。
[python bytes型への変換でASCIIが混じってしまう](https://teratail.com/questions/163665)
[python3 to_bytes()による変換結果がb'\x00'形式にならない](https://teratail.com/questions/81527)

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る