Durante il tentativo di comunicare con un dispositivo di elaborazione audio denominato BSS London Blu-80, ho scoperto che devo inviare un checksum creato da Xoring il messaggio. Un messaggio di esempio inviato è:Creazione di xum checksum di tutti i byte in stringa esadecimale In Python
0x8d 0x1e 0x19 0x1b 0x83 0x00 0x01 0x01 0x00 0x00 0x00 0x4b 0x00 0x00 0xc2
Con 0xc2 il checksum corretto per tale messaggio.
"Il checksum è un esclusivo a byte singolo o (xor) di tutti i byte nel corpo del messaggio."
Il corpo del messaggio è quello precedente meno il checksum.
Il codice tento comunque:
packet = '0x8d 0x1e 0x19 0x1b 0x83 0x00 0x01 0x01 0x00 0x00 0x00 0x4b 0x00 0x00'
xor = 0
i = 0
while i < len(packet):
xor = xor^ord(packet[i])
i += 1
>>print xor
46
>>print hex(xor)
'0x2e'
Sono ovviamente facendo qualcosa di sbagliato qui, e non del tutto la comprensione di questo. Qualsiasi aiuto sarà molto apprezzato.
Grazie!
Provare 'packet = '\ x8d \ x1 \ x19 \ x1b \ x83 \ x00 \ x01 \ x01 \ x00 \ x00 \ x00 \ x4b \ x00 \ x00''. –
Qui puoi vedere il tuo risultato: th-thielemann.de/tools/checksum.html –