Mit Python 3.7 bekomme ich:
Die Ausgaben passen doch, oder? Die byte-Objekte werden halt geprettyprinted von der byte-Klasse. Bis 31 gibt sie Hexadezimalziffern aus, danach das ASCII-Zeichen:
Es scheint, als ob bei 128 und danach wieder Hexadezimalziffern ausgegeben werden:
Ich wäre sehr erstaunt, wenn ein Bug in einer solch grundlegenden Funktion vorherrschen würde. Dann wären ja alle Codec-Libraries betroffen, d.h. jede Lib, die irgendwie binäre Daten liest oder schreibt.
Übrigens mit der hex-Methode auf der bytes-Klasse kannst du dir immer Hexadezimalziffern anzeigen lassen:
Die habe ich in der Python API Doku gefunden: Built-in Types — Python 3.8.5 documentation.
Code:
>>> (39).to_bytes(2, "big")
b"\x00'"
>>> (39).to_bytes(1, "big")
b"'"
Code:
>>> (31).to_bytes(1, "big")
b'\x1f'
>>> (32).to_bytes(1, "big")
b' '
Code:
>>> (127).to_bytes(1, "big")
b'~'
>>> (128).to_bytes(1, "big")
b'\x80'
Ich wäre sehr erstaunt, wenn ein Bug in einer solch grundlegenden Funktion vorherrschen würde. Dann wären ja alle Codec-Libraries betroffen, d.h. jede Lib, die irgendwie binäre Daten liest oder schreibt.
Übrigens mit der hex-Methode auf der bytes-Klasse kannst du dir immer Hexadezimalziffern anzeigen lassen:
(39).to_bytes(1, "big").hex()
Die habe ich in der Python API Doku gefunden: Built-in Types — Python 3.8.5 documentation.