Ich habe eine einfache Funktion, die byteweise den Wert eines bytes16 0x20010db800000000000000000000001 druckt, und ich erhalte das folgende Ergebnis.
['0x20', '0x01', '0x0d', '0xb7', '0xff', '0xff', '0xff', '0x65' ]
[ '0x20', '0x7e', '0x22', '0x36', '0x66', '0xc0', '0x00', '0x00' ]
Es sollte nicht sein??
['0x20', '0x01', '0x0d', '0xb8', '0x00', '0x00', '0x00', '0x00' ]
[ '0x00', '0x00', '0x00', '0x00', '0x00', '0x00', '0x00', '0x01' ]
Warum ist es nicht??
Hier der Code:
function print1(bytes16 a) public
returns (bytes1,bytes1,bytes1,bytes1,bytes1,bytes1,bytes1,bytes1){
return (a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);}
function print2(bytes16 a) public returns
(bytes1,bytes1,bytes1,bytes1,bytes1,bytes1,bytes1,bytes1){
return (a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);}
Schritt zum Reproduzieren:
print1(0x20010db8000000000000000000000001);
print2(0x20010db8000000000000000000000001);
Ich habe deinen Code mit Remix getestet. Aber es funktioniert gut. Wenn Sie mit Trüffel (Javascript-Testdatei) getestet haben, sollten Sie print1 ("0x20010db8000000000000000000000001") verwenden, vergessen Sie nicht "". Ich habe ein ähnliches Problem mit dem byte1-Array wie hier .
Und das ist das Trüffelergebnis mit Ihrem Code,
plus, sowohl print1 als auch print2, fügen Sie besser "pure" hinzu, um Warnungen zu vermeiden, so etwas wie ...
function print1(bytes16 a) public pure
Stefan Angieri
Kronos