【问题标题】:Slice numbers in Solidity (For example extract 2 first number from uint)Solidity 中的切片数字(例如从 uint 中提取 2 个第一个数字)
【发布时间】:2021-01-06 19:25:38
【问题描述】:

我有这个号码:

uint256 numbers = 123456789;

我需要将前两个数字 (12) 提取到 uint 变量中。

还可以提取前一个数字之后的下两个数字:34

等等。

有什么简单的方法可以在solidity中做这样的事情吗?

我有这个功能,但它是为字符串制作的:

function getSlice(uint256 begin, uint256 end, string text) public pure returns (string) {
    bytes memory a = new bytes(end-begin+1);
    for(uint i=0;i<=end-begin;i++){
        a[i] = bytes(text)[i+begin-1];
    }
    return string(a);    
}

就我而言,我希望 INPUT/OUTPUT 数字为 UINT256。

提前感谢您的帮助!

【问题讨论】:

  • 我的建议是没有理由做的是 Solidity。只需更改函数 API,以便发送方 (JavaScript/Python) 为您执行此操作。

标签: ethereum solidity smartcontracts truffle remix


【解决方案1】:
  function get2First() public view returns (uint) { 
    
    uint a = 123456789;
    uint b = a / 10000000;       
    return  b ;
}



function get2second() public view returns (uint) {
    
    uint a = 123456789;
    uint b = a / 100000;
    uint c = b % 100;
    return  c ;
}

【讨论】:

  • 请解释你的答案。
  • modif 很抱歉。通过除以 10000000,您只保留第 2 个数字。在第二个函数中,您保留第一个数字 4,然后模数允许您删除第一个数字。
猜你喜欢
  • 2011-07-20
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多