Voglio convertire un numero intero (int
o long
) una stringa di byte big-endian. La stringa di byte deve essere di lunghezza variabile, in modo che venga utilizzato solo il numero minimo di byte (la lunghezza totale dei dati precedenti è nota, quindi è possibile dedurre la lunghezza variabile).Come convertire un numero intero in una stringa di byte di lunghezza variabile?
mia soluzione attuale è
import bitstring
bitstring.BitString(hex=hex(456)).tobytes()
che dipende ovviamente dalla endianness della macchina e dà risultati falsi, perché 0 bit sono aggiungono e non anteporre.
Qualcuno conosce un modo per farlo senza fare alcuna ipotesi sulla lunghezza o l'endianess di un int
?
Questo ha solo bisogno di funzionare per un 'int', o ha bisogno di lavorare anche per un' lungo? – jchl
Anche per 'long' ho dimenticato questo. Modificherò la domanda. –
Questo può essere fatto semplicemente in qualsiasi versione di Python senza dipendenze esterne - in ogni caso, si desidera una stringa BYTE, non una BITstring. –