Quiero convertir un número entero (int
o long
) una cadena de bytes big-endian. La cadena de bytes tiene que ser de longitud variable, de modo que solo se utiliza el número mínimo de bytes (se conoce la longitud de longitud total de los datos anteriores, por lo que se puede inferir la longitud variable).Cómo convertir un entero a una cadena de bytes de longitud variable?
Mi solución actual es
import bitstring
bitstring.BitString(hex=hex(456)).tobytes()
que depende obviamente de la orden de bits de la máquina y da resultados falsos, debido a 0 bits se anexan y sin antepuesto.
¿Alguien sabe una manera de hacer esto sin hacer ninguna suposición acerca de la longitud o endianess de un int
?
¿Esto solo tiene que funcionar para un 'int', o necesita trabajar también durante un' long'? – jchl
Por 'long' también, me olvidé de esto. Editaré la pregunta. –
Esto se puede hacer simplemente en cualquier versión de Python sin dependencias externas; en cualquier caso, desea una cadena BYTE, no una BITstring. –