¿Cómo convertir bytearray con bytes no ASCII a cadenas en python?

No sé cómo convertir bitarray de Python a cadena si contiene bytes no ASCII. Ejemplo:

>>> string='\x9f' >>> array=bytearray(string) >>> array bytearray(b'\x9f') >>> array.decode() Traceback (most recent call last): File "", line 1, in  UnicodeDecodeError: 'ascii' codec can't decode byte 0x9f in position 0: ordinal not in range(128) 

En mi ejemplo, solo quiero recuperar de alguna manera una cadena ‘\ x9f’ del bytearray. ¿Es eso posible?

En Python 2, simplemente str() a str() :

 >>> import sys; sys.version_info sys.version_info(major=2, minor=7, micro=8, releaselevel='final', serial=0) >>> string='\x9f' >>> array=bytearray(string) >>> array bytearray(b'\x9f') >>> str(array) '\x9f' 

En Python 3, querrías volver a convertirlo en un objeto de bytes :

 >>> bytes(array) b'\x9f' 

Has probado

 byteVariable.decode('utf-8') 

Me gustaría mencionar la biblioteca de binascii que viene con Python.

Mi caso de uso: estaba consultando una base de datos que tenía un campo binario que se usaba como clave dentro de la base de datos. Quería tirar ese campo binario y tratarlo como una clave en otro lugar. Pensé que convertirlo en una cadena era el mejor caso de uso.

binascii me ofreció una mejor alternativa:

import binascii binary_field = bytearray(b'\x92...') binascii.hexlify(binary_field)