Using Hexadecimal in Rust A Comprehensive Guide

Hexadecimal (also known as “hex”) is a base-16 number system often used in computing for its compact representation of binary data. In this article, we will explore how to work with hexadecimal values in Rust, a systems programming language that emphasizes safety, concurrency, and performance.
Table of Contents
Section titled “Table of Contents”- Introduction to Hexadecimal
- Hexadecimal Literals in Rust
- Converting Between Hexadecimal and Other Number Systems
- Working with Hex Strings
- Conclusion
Introduction to Hexadecimal
Section titled “Introduction to Hexadecimal”Hexadecimal is a positional numeral system that uses a set of 16 distinct symbols. These symbols are the numerals 0-9 and the letters A-F (or a-f). Each digit in a hexadecimal number represents a power of 16, starting from the rightmost digit, which represents 16^0 (1). For example, the hexadecimal number 4A3B can be calculated as:
(4 * 16^3) + (10 * 16^2) + (3 * 16^1) + (11 * 16^0) = 19035Hexadecimal Literals in Rust
Section titled “Hexadecimal Literals in Rust”In Rust, you can represent hexadecimal literals using the 0x prefix. For example, the following code snippet declares a hexadecimal integer:
fn main() { let hex_number = 0x4A3B; println!("The decimal value of 0x4A3B is {}", hex_number);}Output:
The decimal value of 0x4A3B is 19035Converting Between Hexadecimal and Other Number Systems
Section titled “Converting Between Hexadecimal and Other Number Systems”Rust provides built-in methods to convert between hexadecimal and other number systems (such as binary and decimal). Let’s take a look at some examples:
Decimal to Hexadecimal
Section titled “Decimal to Hexadecimal”To convert a decimal integer to a hexadecimal string, you can use the format! macro with the x specifier:
fn main() { let decimal_number = 19035; let hex_string = format!("{:x}", decimal_number); println!("The hexadecimal representation of {} is 0x{}", decimal_number, hex_string);}Output:
The hexadecimal representation of 19035 is 0x4A3BHexadecimal to Decimal
Section titled “Hexadecimal to Decimal”To convert a hexadecimal string to a decimal integer, you can use the u32::from_str_radix method (or any other appropriate integer type depending on the range of your hexadecimal value):
use std::num::ParseIntError;
fn main() -> Result<(), ParseIntError> { let hex_string = "4A3B"; let decimal_number = u32::from_str_radix(hex_string, 16)?; println!("The decimal value of 0x{} is {}", hex_string, decimal_number); Ok(())}Output:
The decimal value of 0x4A3B is 19035Working with Hex Strings
Section titled “Working with Hex Strings”Sometimes, you may need to work with hexadecimal strings that represent binary data. In this case, you can use the hex crate, which provides convenient methods for encoding and decoding hex strings.
Add the hex crate to your Cargo.toml:
[dependencies]hex = "0.4"Now you can use the functions provided by the hex crate to work with hex strings:
Encoding Binary Data as Hex Strings
Section titled “Encoding Binary Data as Hex Strings”use hex;
fn main() { let binary_data = b"Hello, world!"; let hex_string = hex::encode(binary_data); println!("The hex representation of 'Hello, world!' is: {}", hex_string);}Output:
The hex representation of 'Hello, world!' is: 48656c6c6f2c20776f726c6421Decoding Hex Strings to Binary Data
Section titled “Decoding Hex Strings to Binary Data”use hex;
fn main() { let hex_string = "48656c6c6f2c20776f726c6421"; let decoded_data = hex::decode(hex_string).expect("Invalid hex string"); let decoded_string = String::from_utf8(decoded_data).expect("Invalid UTF-8"); println!("The decoded string is: '{}'", decoded_string);}Output:
The decoded string is: 'Hello, world!'Conclusion
Section titled “Conclusion”In this article, we’ve explored how to work with hexadecimal values in Rust. We’ve covered hexadecimal literals, conversion between decimal and hexadecimal, and encoding/decoding of hex strings usingthe hex crate. With this knowledge, you should now be able to confidently manipulate hexadecimal numbers and strings in your Rust projects.
© 2026 David Li · Home · Blog · RSS ·Classic site · Built with Astro, Starlight and three.js