Type Conversion in Solidity Last Updated : 09 Aug, 2023 Comments Improve Suggest changes Like Article Like Report Solidity is a popular programming language specifically designed for developing smart contracts on the Ethereum blockchain. As a statically-typed language, Solidity offers various features to handle data types and conversions. Conversions play a crucial role in transforming data from one type to another, allowing developers to manipulate and interact with variables efficiently. In this article, we will explore the concept of conversions in Solidity and how they can be utilized effectively.Solidity provides several built-in functions and operators for type conversions, enabling developers to convert between different data types such as integers, strings, addresses, and more. These conversions are essential for performing arithmetic operations, input/output operations, and interacting with external contracts and libraries. Type ConversionsLet's dive into some common types of conversions and how they can be used in Solidity: 1. Integer ConversionsInteger conversions in Solidity involve converting values between different integer types, such as uint8 to uint256, to accommodate varying ranges and precision requirements. This allows for efficient storage and manipulation of integers while ensuring data integrity. Example: Solidity // Solidity program to implement // Integer Conversion // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; contract helloGeeks { function convert() public pure returns (uint256) { uint8 a = 100; uint256 b = uint256(a); return b; } } Output: Explanation: In the above example, the code defines a Solidity contract named helloGeeks with a public function convert that returns a uint256 value. Inside the function, a uint8 variable a is assigned the value 100. To convert a to a uint256, the type-casting syntax uint256(a) is used, and the result is stored in a uint256 variable b. Finally, the function returns the converted b. This integer conversion allows storing a smaller-sized integer (uint8) in a larger-sized integer (uint256) for a wider range and precision without data loss.2. String ConversionsString conversions in Solidity involve converting non-string data types, such as integers or addresses, to their string representations. This enables the manipulation and display of data in a human-readable format, facilitating communication and data presentation in smart contracts. Example: Solidity // Solidity program to implement // String Conversion // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; contract helloGeeks { function convertToString() public pure returns (string memory) { uint256 x = 42; string memory str = toString(x); return str; } function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits--; buffer[digits] = bytes1(uint8(48 + (value % 10))); value /= 10; } return string(buffer); } } Output: Explanation: In the above example, the contract helloGeeks has two functions. The convertToString function returns a string value. It assigns the value 42 to a variable x of type uint256. The toString function is called with x as an argument to convert it to a string, and the result is stored in str. The toString function takes a uint256 input and returns a string. If the input is zero, it directly returns "0". Otherwise, it calculates the number of digits by dividing the input by 10 until it reaches zero, incrementing a counter. It creates a buffer of bytes with a length equal to the number of digits. Then, it extracts the individual digits from the input, starting from the most significant digit, converts them to ASCII representation, and stores them in the buffer. Finally, the buffer is converted back to a string, and the string representation of the original value is returned.3. Address ConversionsIn Solidity, addresses can be converted between different types, such as converting an address to a uint or a string. Converting an address to a uint can be useful when performing arithmetic operations while converting it to a string can be beneficial for output formatting or concatenation. Example: Solidity // Solidity program to implement // Address Conversion // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; contract helloGeeks { function convert() public pure returns (string memory) { address addr = address(0xec6758926Df05d19ea1EFebf0731EFe381Cd6B07); string memory addrStr = toString(addr); return addrStr; } function toString(address _addr) internal pure returns (string memory) { bytes32 value = bytes32(uint256(uint160(_addr))); bytes memory alphabet = "0123456789abcdef"; bytes memory str = new bytes(42); str[0] = '0'; str[1] = 'x'; for (uint256 i = 0; i < 20; i++) { str[2 + i * 2] = alphabet[uint8(value[i + 12] >> 4)]; str[3 + i * 2] = alphabet[uint8(value[i + 12] & 0x0f)]; } return string(str); } } Output: Explanation: In the above example, the helloGeeks contract has two functions. The convert function returns a string. It assigns an Ethereum address to an address variable named addr. To convert the address to a string, the code calls the toString function with addr as an argument. The toString function takes an address input and returns a string. It converts the address to a bytes32 value, creates a bytes array to store the resulting string, adds the 0x prefix, extracts the hexadecimal characters from the bytes32 value, and converts the bytes array to a string.4. Type Conversions for External InteractionsType conversions for external interactions in Solidity, such as using the payable keyword, allow for seamless interaction with external contracts, enabling transfers of Ether and access to specific functionalities exclusive to payable addresses. It ensures compatibility and enables smooth integration with other contracts or external entities in the Ethereum ecosystem. Example: Solidity // Solidity program to implement // Type Conversions for External Interactions // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; contract helloGeeks { function convert() public pure returns (address payable) { address addr = 0xec6758926Df05d19ea1EFebf0731EFe381Cd6B07; address payable addrPayable = payable(addr); return addrPayable; } } Output: Explanation: In the above example, the helloGeeks contract has a convert function that returns an address payable. Inside the function, an Ethereum address is assigned to an address variable named addr. The code uses the payable keyword to convert addr to an address payable variable called addrPayable. This conversion allows for interactions with external contracts and transfers to addresses. The function then returns addrPayable, the converted address in its payable form. Comment More infoAdvertise with us Next Article Introduction to Solidity N nikunj_sonigara Follow Improve Article Tags : Solidity Solidity-Basics Similar Reads Solidity Tutorial Solidity tutorial is designed for those who want to learn Solidity programming language and for experienced Solidity developers looking to gain a deeper understanding of the language. The following Solidity tutorial explains the basic and advanced concepts of Solidity programming language and provid 6 min read Solidity BasicsIntroduction to SoliditySolidity is a brand-new programming language created by Ethereum which is the second-largest market of cryptocurrency by capitalization, released in the year 2015 and led by Christian Reitwiessner. Some key features of solidity are listed below: Solidity is a high-level programming language designed 5 min read Setting Up Smart Contract Development EnvironmentA development environment is an environment in which all the resources and tools are available which are used to develop a program or software product. Here, an attempt to create a development environment that is a collection of the processes and tools that are used to develop smart contracts.There 5 min read Solidity - Basic SyntaxSolidity is a programming language specifically designed for developing smart contracts on the Ethereum blockchain. It is a high-level, statically-typed language with syntax and features similar to those of JavaScript, C++, and Python. Solidity is used to write self-executing smart contracts that ca 5 min read "Hello World" Smart Contract in Remix-IDEWhat do you mean by Smart Contract? Smart contracts are self-executing contracts. The term was coined by Nick in 1994. Smart contracts are very different from traditional software programs. They are immutable once deployed on the blockchain. It was because of Ethereum the term smart contract became 4 min read Solidity - CommentsComments are an important aspect of programming as they help in providing clarity and understanding to the code. They allow developers to document the code and explain its purpose, making it easier for others to read and maintain the code. Solidity, being a programming language, also supports the us 4 min read Solidity - TypesSolidity is a statically typed language, which implies that the type of each of the variables should be specified. Data types allow the compiler to check the correct usage of the variables. The declared types have some default values called Zero-State, for example for bool the default value is False 4 min read Variable and OperatorsSolidity - VariablesA Variable is basically a placeholder for the data which can be manipulated at runtime. Variables allow users to retrieve and change the stored information. Rules For Naming Variables 1. A variable name should not match with reserved keywords. 2. Variable names must start with a letter or an unders 4 min read Solidity - Variable ScopeVariable scope is an essential concept in Solidity, the programming language for Ethereum smart contracts. Solidity has various types of variables with different scopes, such as local, state, and global variables. Local Variable Local variables are declared within a function and are only accessible 3 min read Solidity - OperatorsIn any programming language, operators play a vital role i.e. they create a foundation for the programming. Similarly, the functionality of Solidity is also incomplete without the use of operators. Operators allow users to perform different operations on operands. Solidity supports the following typ 7 min read Control Flow in SoliditySolidity - While, Do-While, and For LoopLoops are used when we have to perform an action over and over again. While writing a contract there may be a situation when we have to do some action repeatedly, In this situation, loops are implemented to reduce the number of lines of the statements. Solidity supports following loops too ease down 3 min read Solidity - Decision Making StatementsDecision making in programming is used when we have to adopt one out of a given set of paths for program flow. For this purpose, conditional statements are used which allows the program to execute the piece of code when the condition fulfills. Solidity uses control statements to control the flow of 4 min read Solidity - Break and Continue StatementsIn any programming language, Control statements are used to change the execution of the program. Solidity allows us to handle loops and switch statements. These statements are usually used when we have to terminate the loop without reaching the bottom or we have to skip some part of the block of cod 2 min read Reference & Mapping Types in SoliditySolidity - StringsSolidity is syntactically similar to JavaScript, C++, and Python. So it uses similar language structures to those languages. Strings in Solidity is a data type used to represent/store a set of characters. Examples: "Hii" // Valid string "Hello World" // Valid string "2022" // Valid string In Solidi 3 min read Solidity - ArraysArrays are data structures that store the fixed collection of elements of the same data types in which each and every element has a specific location called index. Instead of creating numerous individual variables of the same type, we just declare one array of the required size and store the element 6 min read Solidity - Enums and StructsEnums are the way of creating user-defined data types, it is usually used to provide names for integral constants which makes the contract better for maintenance and reading. Enums restrict the variable with one of a few predefined values, these values of the enumerated list are called enums. Option 3 min read Solidity - MappingsMapping in Solidity acts like a hash table or dictionary in any other language. These are used to store the data in the form of key-value pairs, a key can be any of the built-in data types but reference types are not allowed while the value can be of any type. Mappings are mostly used to associate t 4 min read Solidity - ConversionsSolidity is a programming language that is used to write smart contracts for the Ethereum blockchain. One important concept in Solidity is conversions, which allow you to change the type of a variable or expression. The article focuses on discussing three types of conversions in Solidity. The follow 6 min read Solidity - Ether UnitsIn the world of Ethereum smart contracts, understanding how Ether (ETH) and its subunits work is crucial. Solidity is the programming language used to write these smart contracts, and it interacts directly with Ether, the cryptocurrency of the Ethereum network. This article focuses on discussing Eth 7 min read Solidity - Special VariablesThere exist special variables and functions in solidity which exist in the global namespace and are mainly used to provide information about the blockchain or utility functions. They are of two types: 1) Block and Transaction Properties: Block Transaction Properties block.coinbase (address payable)C 3 min read Solidity - Style GuideSolidity is a computer programming language used to create Ethereum smart contracts. These contracts self-execute. The code and the agreements contained therein are enforced by the blockchain network. Solidity is a high-level language, meaning that it is designed to be human-readable and easy to wri 13 min read Solidity FunctionsSolidity - FunctionsA function is basically a group of code that can be reused anywhere in the program, which generally saves the excessive use of memory and decreases the runtime of the program. Creating a function reduces the need of writing the same code over and over again. With the help of functions, a program can 4 min read Solidity - Function ModifiersFunction behavior can be changed using function modifiers. Function modifier can be used to automatically check the condition prior to executing the function. These can be created for many different use cases. Function modifier can be executed before or after the function executes its code. The modi 8 min read Solidity - View and Pure FunctionsThe view functions are read-only function, which ensures that state variables cannot be modified after calling them. If the statements which modify state variables, emitting events, creating other contracts, using selfdestruct method, transferring ethers via calls, Calling a function which is not 'v 2 min read Solidity - Fall Back FunctionThe solidity fallback function is executed if none of the other functions match the function identifier or no data was provided with the function call. Only one unnamed function can be assigned to a contract and it is executed whenever the contract receives plain Ether without any data. To receive E 3 min read Solidity Function OverloadingFunction overloading in Solidity lets you specify numerous functions with the same name but varying argument types and numbers.Solidity searches for a function with the same name and parameter types when you call a function with certain parameters. Calls the matching function. Compilation errors occ 1 min read Mathematical Operations in SoliditySolidity is a brand-new programming language created by the Ethereum which is the second-largest market of cryptocurrency by capitalization, released in the year 2015 led by Christian Reitwiessner. Ethereum is a decentralized open-source platform based on blockchain domain, used to run smart contrac 6 min read Solidity AdvancedSolidity - Basics of ContractsSolidity Contracts are like a class in any other object-oriented programming language. They firmly contain data as state variables and functions which can modify these variables. When a function is called on a different instance (contract), the EVM function call happens and the context is switched i 4 min read Solidity - InheritanceInheritance is one of the most important features of the object-oriented programming language. It is a way of extending the functionality of a program, used to separate the code, reduces the dependency, and increases the re-usability of the existing code. Solidity supports inheritance between smart 6 min read Solidity - ConstructorsA constructor is a special method in any object-oriented programming language which gets called whenever an object of a class is initialized. It is totally different in case of Solidity, Solidity provides a constructor declaration inside the smart contract and it invokes only once when the contract 4 min read Solidity - Abstract ContractAbstract contracts are contracts that have at least one function without its implementation or in the case when you don't provide arguments for all of the base contract constructors. Also in the case when we don't intend to create a contract directly we can consider the contract to be abstract. An i 3 min read Solidity - Basics of InterfaceInterfaces are the same as abstract contracts created by using an interface keyword, also known as a pure abstract contract. Interfaces do not have any definition or any state variables, constructors, or any function with implementation, they only contain function declarations i.e. functions in inte 2 min read Solidity - LibrariesLibraries in solidity are similar to contracts that contain reusable codes. A library has functions that can be called by other contracts. Deploying a common code by creating a library reduces the gas cost. Functions of the library can be called directly when they do not modify the state variables i 4 min read Solidity - AssemblyAssembly or Assembler language indicates a low-level programming language that can be converted to machine code by using assembler. Assembly language is tied to either physical or a virtual machine as their implementation is an instruction set, and these instructions tell the CPU to do that fundamen 4 min read What are Events in Solidity?Solidity Events are the same as events in any other programming language. An event is an inheritable member of the contract, which stores the arguments passed in the transaction logs when emitted. Generally, events are used to inform the calling application about the current state of the contract, w 2 min read Solidity - Error HandlingSolidity has many functions for error handling. Errors can occur at compile time or runtime. Solidity is compiled to byte code and there a syntax error check happens at compile-time, while runtime errors are difficult to catch and occurs mainly while executing the contracts. Some of the runtime erro 6 min read Top 50 Solidity Interview Questions and Answers Solidity is an object-oriented programming language used to implement smart contracts on blockchain platforms like Ethereum, which generates transaction records in the system. To excel in your journey toward top companies as a Solidity developer, you need to master some important Solidity Interview 15+ min read Like