Generating Random Hexadecimal Strings in Python

Introduction

Hexadecimal strings and colors are used quite frequently in the world of programming. Whether you're generating a unique identifier or picking a random color for a UI element, being able to generate random hexadecimal strings and colors is a nice tool to have in your arsenal.

In this Byte, we'll explore how you can generate these random hexadecimal strings in Python.

Creating Random Hexadecimal Strings in Python

A hexadecimal string is a string of characters from the set [0-9, a-f]. They're often used in computing to represent binary data in a form that's more human-readable.

Here's how you can generate a random hexadecimal string in Python:

import os

def random_hex_string(length=6):
    return os.urandom(length).hex()

print(random_hex_string())

When you run this script, it will output a random hexadecimal string of the given length, which in this case defaults to 6.

Byte Objects to String Conversion

In the above code, we're using the os.urandom() function to generate a string of random bytes, and then converting it to a hexadecimal string with the .hex() method. This is because os.urandom() actually returns a bytes object, which is a sequence of integers in the range 0 <= x < 256, which can then be converted to a hex string.

import os

random_bytes = os.urandom(6)
print(type(random_bytes))  # <class 'bytes'>

hex_string = random_bytes.hex()
print(type(hex_string))    # <class 'str'>
Get free courses, guided projects, and more

No spam ever. Unsubscribe anytime. Read our Privacy Policy.

In the above code, we first print the type of the object returned by os.urandom(), which is <class 'bytes'>. Then, after converting it to a hex string with the .hex() method, we print the type again, which is now <class 'str'>.

Random Hex Strings with random.choices()

Another way to generate a random hexadecimal string in Python is by using the random.choices() function. This function returns a list of elements chosen from the input iterable, with replacement. Here's how you can use it:

import random
import string

def random_hex_string(length=6):
    return ''.join(random.choices(string.hexdigits, k=length))

print(random_hex_string())

When you run this script, it will output a random hexadecimal string of the specified length. It's not necessarily better than the previous method, but for readability, some people may prefer this over using os.urandom().

Random Hex Strings with secrets.token_hex()

Python's secrets module, introduced in Python 3.6, provides functions for generating secure random numbers for managing secrets. One of these functions is secrets.token_hex(), which generates a secure random text string in hexadecimal. Here's how you can use it:

import secrets

def random_hex_string(length=6):
    return secrets.token_hex(length)

print(random_hex_string())

When you run this script, it will output a secure random hexadecimal string of the specified length.

Note: The secrets module should be used for generating data for secret tokens, authentication, security tokens, and related cases, where security is a concern.

Conclusion

In this Byte, we've covered how to generate random hexadecimal strings in Python. Whether you're using the latest version of Python or an older one, there are several ways to achieve this.

Last Updated: August 18th, 2023
Was this helpful?

© 2013-2024 Stack Abuse. All rights reserved.

AboutDisclosurePrivacyTerms