Solidity

如何在 Solidity 中將字節轉換為 uint

  • April 16, 2022

嘿有沒有辦法在 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 個氣體。

希望這可以幫助

引用自:https://ethereum.stackexchange.com/questions/51229