Sometimes, we might be in a problem in which we need to handle unusual Datatype conversions. One such conversion can be converting the list of bytes(byte array) to the Hexadecimal string format in Python. Let’s discuss certain Methods in which this can be done.
Using format() + join() to Convert Byte Array to Hex String
The combination of the above functions can be used to perform this particular task. The format function converts the bytes into hexadecimal format. “02” in format is used to pad required leading zeroes. The join function allows joining the hexadecimal result into a string.
Python3
# initializing list test_list = [ 124 , 67 , 45 , 11 ] # printing original list print ( "The original string is : " + str (test_list)) # using join() + format() # Converting bytearray to hexadecimal string res = ' '.join(format(x, ' 02x ') for x in test_list) # printing result print ( "The string after conversion : " + str (res)) |
Output:
The original string is : [124, 67, 45, 11] The string after conversion : 7c432d0b
Using binascii.hexlify() to convert Byte Array to Hex String
The inbuilt function of hexlify can be used to perform this particular task. This function is recommended for this particular conversion as it is tailor-made to solve this specific problem.
Python3
import binascii # initializing list test_list = [ 124 , 67 , 45 , 11 ] # printing original list print ( "The original string is : " + str (test_list)) # using binascii.hexlify() # Converting bytearray to hexadecimal string res = binascii.hexlify(bytearray(test_list)) # printing result print ( "The string after conversion : " + str (res)) |
Output:
The original string is : [124, 67, 45, 11] The string after conversion : 7c432d0b
Using the bytes.hex() method to directly convert the bytearray to a hexadecimal string:
Step by step Algorithm:
- Define a test_list,bytearray containing the bytes to be converted.
- Use the hex() method of the bytearray class to convert the bytearray to a hexadecimal string.
- Store the resulting hexadecimal string in a variable.
- Print the resulting string.
Python3
# define the original bytearray test_list = [ 124 , 67 , 45 , 11 ] byte_array = bytearray(test_list) print ( "The string before conversion: " + str (test_list)) # convert bytearray to hexadecimal string hex_string = byte_array. hex () # print the result print ( "The string after conversion: " + hex_string) |
Complexity Analysis:
Time Complexity: O(n), where n is the length of the input bytearray. The hex() method simply iterates over the bytes in the bytearray and converts each byte to its hexadecimal representation, which takes constant time per byte.
Space Complexity: O(n), since we are creating a new string object to store the resulting hexadecimal string.
RECOMMENDED ARTICLES – Python | bytearray() function
Using the struct module and the h format specifier:
- Import the struct module
- Define the original bytearray
- Convert each byte in the bytearray to a binary string using the struct.pack() function and the B format specifier
- Convert each binary string to a hexadecimal string using the hex() method
- Concatenate the hexadecimal strings for each byte into a single string using the join() method
- Print the original bytearray and the resulting hexadecimal string
Python3
import struct # Define the original bytearray test_list = [ 124 , 67 , 45 , 11 ] byte_array = bytearray(test_list) # Convert bytearray to hexadecimal string using the struct module hex_string = ' '.join(struct.pack(' B', x). hex () for x in byte_array) # Print the result print ( "The string before conversion: " + str (test_list)) print ( "The string after conversion: " + hex_string) |
The string before conversion: [124, 67, 45, 11] The string after conversion: 7c432d0b
Time complexity: O(n), where n is the length of the byte array
Auxiliary Space: O(n), since we are creating a new string to hold the concatenated hexadecimal strings
Using codecs.encode()
- Import the codecs module.
- Define a list of integers that represent the original bytearray.
- Create a bytearray from the list of integers.
- Use the codecs.encode() method to convert the bytearray to a hexadecimal string, then decode it to a regular string.
- Print the original list of integers and the converted hexadecimal string.
Python3
import codecs #Define the original bytearray test_list = [ 124 , 67 , 45 , 11 ] byte_array = bytearray(test_list) #Convert bytearray to hexadecimal string using codecs.encode() hex_string = codecs.encode(byte_array, 'hex' ).decode() #Print the result print ( "The string before conversion: " + str (test_list)) print ( "The string after conversion: " + hex_string) |
The string before conversion: [124, 67, 45, 11] The string after conversion: 7c432d0b
The time complexity of this code is O(n), where n is the length of the input list.
The auxiliary space of this code is also O(n), as it creates a new bytearray and a new string