首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个int128变量转换为Bytes32和back

将两个int128变量转换为Bytes32和back
EN

Ethereum用户
提问于 2018-06-22 00:12:55
回答 1查看 142关注 0票数 0

对于Bytes32到2x int128,我有工作代码。我已经修改了此堆栈交换应答的代码

代码语言:javascript
复制
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

代码语言:javascript
复制
function int128x2tobytes32(int128 x, int128 y) pure public returns (bytes32 z){
    assembly {
        mstore(z, x)
        mstore(add(z, 16), y)
    }
}

提前感谢

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-06-24 00:21:15

结果证明不需要组装。

代码语言:javascript
复制
function int128x2tobytes32(int128 x, int128 y) pure public returns (bytes32){
    bytes32 c = bytes16(x);
    bytes32 d = bytes16(y);
    return (c>> 128) | d; 
}

多亏了这篇媒体文章

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/51814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档