Python Forum

Full Version: Convert hex value into string
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello,

>>> hex_value = 0xFF
>>> string_value = 'hex value is: ' + str(hex_value)
>>> string_value
'hex value is: 255'
How to get hex value is: FF ?
Thanks
Sancho
This includes the 0x
hex_value = 255
hex_value_str = hex(hex_value)
print(f'hex value is: {hex_value_str}')
Output:
hex value is: 0xff
Some options:
>>> format(255, "x")
'ff'
>>> format(255, "X")
'FF'
>>> f"{255:x}"
'ff'
>>> f"{255:X}"
'FF'
>>> f"{hex(255)}"
'0xff'
What do you mean by "get hex value is: FF"? Python lets you use hex notation when writing a string literal.
x = 0xff
And you can print an integer using hex notation a number of ways.
print(hex(x))
print(f'{x:x}')
print(f'{x:X}')
Or do you want to "get" a hex value, as in using input() to enter a hex value? Unfortunately I get an error when I try to do this:
x = int(input('Enter a number in hex format '))
Then error is informative "ValueError: invalid literal for int() with base 10: '0xFF'. So I tried this:
x = int(input('Enter a number in hex format '), 16)
This works if I enter 'ff', 'FF', '0xff' or '0xFF'
Well ... probably I have to clarify the problem
  1. The hexadecimal value is fixed in the form 0xSS (e.g. 0xFF, 0x42, 0xBA, etc.) It cannot be entered in decimal form, it's part of design feautres
  2. This haxadecimal value have to be added to the string (actually a command that is sent over terminal). And in this command the hexadecimal value should be presented in its "hexadecimal form", but without preceeding 0x.

Sincerely,

Sancho
Why not just strip off the 0x? If you receive it in that form and send it in that form, you don't actually need to interpret it as a number at all.

h = input("Enter the hex value: ")
h = h.replace("0x", "")
new_string = f"The hex value is {h}"
print(new_string)
Output:
Enter the hex value: 0xFF The hex value is FF
(Dec-22-2020, 05:31 PM)bowlofred Wrote: [ -> ]Some options:
>>> format(255, "x")
'ff'
>>> format(255, "X")
'FF'
>>> f"{255:x}"
'ff'
>>> f"{255:X}"
'FF'
>>> f"{hex(255)}"
'0xff'

Resolved:
>>> hex_value = 0xFF
>>> string_value = 'hex value is: ' + format(hex_value, "X")
>>> string_value
'hex value is: FF'
>>> 
Thanks.
I rushed a little bit saying it's Ok.
Actually, the problem is not completely resolved: format suppress leading zeros
For example 0x00FF is foramtted as FF, but it should be 00FF.
Any suggestions ?
Resolved:
'hex value is: ' + '{:04X}'.format(hex_value)