Back
Lesson 1:
 Data Types
Introduction to Solidity data types
Progress: 0%
Visit desktop version for better experiences.
Data Types
Solidity is a statically typed language, which means that the type of each variable (state and local) needs to be specified. Solidity provides several elementary types such as:
bool(boolean)uint,uint256,uint32(unsigned integer)int,int256,int32(signed integer)address(Ethereum address)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract Primitives {
    bool public boo = true;
    /*
    uint stands for unsigned integer, meaning non negative integers
    different sizes are available
        uint8   ranges from 0 to 2 ** 8 - 1
        uint16  ranges from 0 to 2 ** 16 - 1
        ...
        uint256 ranges from 0 to 2 ** 256 - 1
    */
    uint8 public u8 = 1;
    uint256 public u256 = 456;
    uint256 public u = 123; // uint is an alias for uint256
    /*
    Negative numbers are allowed for int types.
    Like uint, different ranges are available from int8 to int256
    int256 ranges from -2 ** 255 to 2 ** 255 - 1
    int128 ranges from -2 ** 127 to 2 ** 127 - 1
    */
    int8 public i8 = -1;
    int256 public i256 = 456;
    int256 public i = -123; // int is same as int256// minimum and maximum of intint256 public minInt = type(int256).min;
    int256 public maxInt = type(int256).max;
    address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
}Bytes in Solidity
In Solidity, the bytes data type is used to represent a sequence of bytes. Bytes are useful for storing binary data, such as file contents or cryptographic hashes.
There are two types of byte arrays in Solidity:
- 
Fixed-size byte arrays: These are declared with
bytes1tobytes32. The number indicates the length of the array in bytes. For example,bytes1is a byte array of length 1,bytes2is a byte array of length 2, and so on up tobytes32. - 
Dynamically-sized byte arrays: These are declared with
bytes. This type is similar tobyte[]in other languages. 
Here's an example of how to use byte arrays:
// Declare a fixed-size byte array
bytes1 a = 0xb5; // [10110101]
bytes1 b = 0x56; // [01010110]
// Declare a bytes10 array
bytes10 d = 0x68656c6c6f776f726c64; // "helloworld" in hexadecimal
// Declare a bytes32 array
bytes32 e = 0x68656c6c6f776f726c6420202020202020202020202020202020202020202020; // "helloworld" padded with spaces in hexadecimal
// Declare a dynamically-sized byte array
bytes memory c = "Hello, world!";