10 solidity中 数字转bytes压缩后还原的问题

最近看了这个文章 https://learnblockchain.cn/article/3112 准备优化下input信息

但是有一个问题 在压缩uint数字 -> bytes以后 数字如何还原? 比如: 数字:3000 --> bytes:0x0000000000000000000000000000000000000000000000000000000000000bb8

传入合约的时候 使用Bytes数值类型 传入0x0bb8

function to_uint(bytes memory input) public pure returns(uint u) {
        assembly {
            u := mload(
                add(0x20,input)
                )
        }
    }  

如果使用这段代码 传入值就会变成 0x0bb8000000000000000000000000000000000000000000000000000000000000 值就变为:5300541194335152988749892502228755547482451690626856874364818603877859328000

这个应该如何向左侧补充0??

请先 登录 后评论

1 个回答

Ethereal - Solidity智能合约开发工程师
请先 登录 后评论
  • 1 关注
  • 0 收藏,2419 浏览
  • 不爱你ZC 提出于 2022-09-03 15:13