1

我有一些从块过滤方法获得的以下事件数据字符串。如何将其转换为原始数据?

from web3 import Web3
#event1 string
a = '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000'
#event2 uint16
b = '0x0000000000000000000000000000000000000000000000000000000000000005'
#event3 string uint16
c = '0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000016200000000000000000000000000000000000000000000000000000000000000'
#event4 string string
d = '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016200000000000000000000000000000000000000000000000000000000000000'
#event5 uint16 uint16
e = '0x00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005'
4

1 回答 1

0
print('event1 data:', Web3.toText(a[130:]))
print('event2 data:', Web3.toInt(hexstr=b))
print('event3 data: num = {}; str = \'{}\''.format(Web3.toInt(hexstr=c[66:130]), Web3.toText(c[194:])))
print('event3 data: str_1 = \'{}\'; str_2 = \'{}\''.format(Web3.toText(d[194:258]), Web3.toText(d[322:])))
print('event5 data: num_1 = {}; num_2 = {}'.format(Web3.toInt(hexstr = e[2:66]),Web3.toInt(hexstr = e[66:])))

>>> event1 data: a
>>> event2 data: 5
>>> event3 data: num = 5; str = 'b'      
>>> event3 data: str_1 = 'b'; str_2 = 'b'
>>> event5 data: num_1 = 5; num_2 = 5 
于 2021-08-02T03:38:42.483 回答