Solidity
如何在 Solidity 中將字節轉換為 uint
嘿有沒有辦法在 Solidity 中
bytes
轉換uint
?
您可以使用此函式將字節轉換為單位:
pragma solidity ^0.4.23; contract mycontract { function bytesToUint(bytes b) public returns (uint256){ uint256 number; for(uint i=0;i<b.length;i++){ number = number + uint(b[i])*(2**(8*(b.length-(i+1)))); } return number; } }
更新了solidity ^0.8.11的功能
function bytesToUint(bytes memory b) internal pure returns (uint256){ uint256 number; for(uint i=0;i<b.length;i++){ number = number + uint(uint8(b[i]))*(2**(8*(b.length-(i+1)))); } return number; }
使用的氣體量取決於
bytes
變數的長度,但這很便宜。轉換bytes
長度為 20 的變數使用大約 420 個氣體。希望這可以幫助