Solidity中的切片编号(例如,从uint中提取2个第一个编号)



我有这样的数字:

uint256 numbers = 123456789;

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

还有可能提取前一个数字后的下两个数字:34

等等。

有什么简单的方法可以扎实地做这件事吗?

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

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中。

提前感谢您的帮助!

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 ;
}

或者您可以通过使用指数来使它更可读。

abi编码返回了一个uint whit 77位数字,但我只想要前16位,因此77-16=61


contract Twist {
  function cutExtra() public view returns (uint) {
uint public num = uint(keccak256(abi.encodePacked("KEK")));
      return num/ 10 ** 61;
  }
}

最新更新