Bit, bytes e complemento di due in Python
Ciao a tutti
Prima che lo schermo voli dalla finestra e io debba spiegare in modo imbarazzante a quelli dell'IT perché me ne serve uno nuovo, vi sarei grato se qualcuno potesse darmi un'idea su come risolvere questo problema.
Con uno script in Python (non ho scelto io di usare questo aborto di linguaggio di pseudo-programmazione) leggo da un'interfaccia SPI tre bytes:
Si tratta del risultato della conversione di un ADC. Sono 24 bit in formato "2's complement".
E qui parte l'odissea del cercare di convertire questi tre valori in un integer utilizzabile.
Ho provato così:
Non funziona.
Ho provato così:
Non funziona.
Idee (oltre ad usare C++)?
Boiler
Prima che lo schermo voli dalla finestra e io debba spiegare in modo imbarazzante a quelli dell'IT perché me ne serve uno nuovo, vi sarei grato se qualcuno potesse darmi un'idea su come risolvere questo problema.
Con uno script in Python (non ho scelto io di usare questo aborto di linguaggio di pseudo-programmazione) leggo da un'interfaccia SPI tre bytes:
- Codice: Seleziona tutto
MSB = ord(spi.bulk_trans(1, [0xFF]))
MB = ord(spi.bulk_trans(1, [0xFF]))
LSB = ord(spi.bulk_trans(1, [0xFF]))
Si tratta del risultato della conversione di un ADC. Sono 24 bit in formato "2's complement".
E qui parte l'odissea del cercare di convertire questi tre valori in un integer utilizzabile.
Ho provato così:
- Codice: Seleziona tutto
code = LSB + MB*256 + (MSB & 0x7F)*256*256 - 0x800000 * (MSB & 0x80)
Non funziona.
Ho provato così:
- Codice: Seleziona tutto
code = LSB + MB*256 + MSB*256*256
if (code & 0x800000) > 0:
code = -(~(code & 0x7FFFFF) + 0b1)
Non funziona.
Idee (oltre ad usare C++)?
Boiler