|
Endian
May 12, 2018 22:23:13 GMT 1
via mobile
Post by randaro on May 12, 2018 22:23:13 GMT 1
Hej!
Jag har problem med konverteringen mellan de olika endian-formaten - någon som vill dela med sig om ett sätt som fungerar bra för er att göra detta på?
Tack på förhand, Mvh Robin
|
|
|
Endian
May 13, 2018 10:56:35 GMT 1
Post by thomaslundqvist on May 13, 2018 10:56:35 GMT 1
Pythons struct-modul är absolut bäst: docs.python.org/3/library/struct.html: Exempel, se formatkoder på doc-sidan ovan:
'<I', little endian, integer, 4 bytes '>H', big endian, short/half byte, 2 bytes
struct.pack - omvandlar ett heltal till bytes struct.unpack - omvandlar bytes till ett heltal
|
|
|
Endian
May 14, 2018 1:23:41 GMT 1
Post by randaro on May 14, 2018 1:23:41 GMT 1
Strålande, tack Thomas. Det funkar när jag utgår från vissa hämtade data som exempelvis timestamp (av typ int). Men när jag hämtar t.ex. föregående blockhash (av typ str) får jag det inte att fungera, och jag antar att det är nödvändigt att kunna vända även på strängar? Hämtat blockhash från block 1211 (previous block hash till ditt exempelblock 1212) ger mig nämligen 00000000ac91c26f8c298112386fd4d2cf5e5bd83e026d3a138b3b351d1adb3f, och den information som stoppas in i blockheaden enligt ditt exempel förstår jag är i omvänd ordning jämfört med detta?
|
|
|
Endian
May 14, 2018 7:41:25 GMT 1
Post by thomaslundqvist on May 14, 2018 7:41:25 GMT 1
Yepp, man behöver vända på hasharna ibland. Enklast är att vända med [::-1] men då måste det vara binär-bytes och inte hexkod. Du kan hitta exempel på olika ställen om du tjuvkikar i decode_block.py.
|
|