对于Bytes32到2x int128,我有工作代码。我已经修改了此堆栈交换应答的代码
function bytes32to2xint128(bytes32 z) pure public returns (int128 x, int128 y){
bytes16[2] memory tmp = [bytes16(0), 0];
assembly {
mstore(tmp, z)
mstore(add(tmp, 16), z)
}
x=int128(tmp[0]);
y=int128(tmp[1]);
}但是对于逆( 2x int128 to Bytes32 ),下面的内容不起作用,并且总是返回
0x0000000000000000000000000000000000000000000000000000000000000000 :bytes32
function int128x2tobytes32(int128 x, int128 y) pure public returns (bytes32 z){
assembly {
mstore(z, x)
mstore(add(z, 16), y)
}
}提前感谢
发布于 2018-06-24 00:21:15
结果证明不需要组装。
function int128x2tobytes32(int128 x, int128 y) pure public returns (bytes32){
bytes32 c = bytes16(x);
bytes32 d = bytes16(y);
return (c>> 128) | d;
}多亏了这篇媒体文章
https://ethereum.stackexchange.com/questions/51814
复制相似问题