Chr () äquivalent, das ein Bytes-Objekt zurückgibt, in py3k

Python 2.x hat chr() , der eine Zahl im Bereich 0-255 in einen Byte-String mit einem Zeichen mit dem numerischen Wert umwandelt und unichr() , der eine Zahl im Bereich 0-0x10FFFF in einen Unicode-String umwandelt Mit einem Zeichen mit dem Unicode-Codepoint. Python 3.x ersetzt unichr() mit chr() , im Einklang mit seiner "Unicode-Strings sind Standard" -Politik, aber ich kann nichts finden, was genau das tut, was der alte chr() hat. Das 2to3 Dienstprogramm (ab 2.6) lässt chr Anrufe allein, was im Allgemeinen nicht richtig ist 🙁

(Dies dient zum Analysieren und Serialisieren eines Dateiformats, das explizit in 8-Bit-Bytes definiert ist.)

  • Python raw_input ungerades Verhalten mit Akzenten mit Strings
  • Entfernen von Interpunktionen aus Unicode-formatierten Zeichenfolgen
  • Unterstützen Sie UnicodeEncodeError Ausnahmen, wenn Sie von Aptana Studio PyDev ausgeführt werden
  • Python-Unicode-Konsolenunterstützung unter Windows
  • Python, um in UTF8 auf Windows XP mit der Konsole zu drucken
  • Standardcodierung für python für stderr?
  • Konvertieren von Unicode in Python
  • Schöne Suppe Unicode kodiert Fehler
  • 4 Solutions collect form web for “Chr () äquivalent, das ein Bytes-Objekt zurückgibt, in py3k”

    Betrachten Sie die Verwendung von Bytearray ((255,)), die das gleiche in Python2 und Python3 funktioniert. In beiden Python-Generationen kann das resultierende Bytearray-Objekt in ein Bytes (obj) umgewandelt werden, das ein Alias ​​für ein Str () in Python2 und Real Bytes () in Python3 ist.

     # Python2 >>> x = bytearray((32,33)) >>> x bytearray(b' !') >>> bytes(x) ' !' # Python3 >>> x = bytearray((32,33)) >>> x bytearray(b' !') >>> bytes(x) b' !' 

    Versuchen Sie Folgendes:

     b = bytes([x]) 

    Beispielsweise:

     >>> bytes([255]) b'\xff' 
     >>> import struct >>> struct.pack('B', 10) b'\n' >>> import functools >>> bchr = functools.partial(struct.pack, 'B') >>> bchr(10) b'\n' 

    Falls Sie den Python 2/3 kompatiblen Code schreiben möchten, verwenden Sie six.int2byte

    Python ist die beste Programmiersprache der Welt.