# How to convert bytes to uint in Solidity

Hey is there a way to convert `bytes` to `uint` in Solidity?

• Could you explain what conversion you would like? Best if you can give an example of a `bytes` value and the corresponding `uint` value you would like to see. Jun 14, 2018 at 14:52

You can use this function to convert bytes to unit:

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

Updated function for 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;
}
``````

The amount of gas used depends on the length of your `bytes` variable, but this is cheap. Converting a `bytes` variable of length 20 uses about 420 gas.

Hope this helps

• Getting an error in Remix: TypeError: Return argument type bytes memory is not implicitly convertible to expected type uint256 Jun 14, 2018 at 15:02
• Can you show me your code?, this works for me well in remix, I put the whole code so you can just copy and paste it. Let me know Jun 14, 2018 at 15:13
• Oh there you go. I think your first post had the return value as "b". This works. Thanks! Jun 14, 2018 at 15:25

Slicing an uint out of bytes using inline assembly

``````function sliceUint(bytes bs, uint start)
internal pure
returns (uint)
{
require(bs.length >= start + 32, "slicing out of range");
uint x;
assembly {
}
return x;
}
``````
• Gas efficient solution here Oct 29, 2020 at 19:45

A fully working modern solution can be found in this repository, authored by ConsenSys:

``````function toUint256(bytes memory _bytes, uint256 _start) internal pure returns (uint256) {
require(_bytes.length >= _start + 32, "toUint256_outOfBounds");
uint256 tempUint;

assembly {