Solidity 中的切片数字(例如从 uint 中提取 2 个第一个数字)
Posted
技术标签:
【中文标题】Solidity 中的切片数字(例如从 uint 中提取 2 个第一个数字)【英文标题】:Slice numbers in Solidity (For example extract 2 first number from uint) 【发布时间】: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) 为您执行此操作。 【参考方案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,然后模数允许您删除第一个数字。以上是关于Solidity 中的切片数字(例如从 uint 中提取 2 个第一个数字)的主要内容,如果未能解决你的问题,请参考以下文章
区块链 Solidity中uint转string 数字转字符串