How to use hex() without 0x in Python?

Python

Python Problem Overview


The hex() function in python, puts the leading characters 0x in front of the number. Is there anyway to tell it NOT to put them? So 0xfa230 will be fa230.

The code is

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')

Python Solutions


Solution 1 - Python

>>> format(3735928559, 'x')
'deadbeef'

Solution 2 - Python

Use this code:

'{:x}'.format(int(line))

it allows you to specify a number of digits too:

'{:06x}'.format(123)
# '00007b'

For Python 2.6 use

'{0:x}'.format(int(line))

or

'{0:06x}'.format(int(line))

Solution 3 - Python

You can simply write

hex(x)[2:]

to get the first two characters removed.

Solution 4 - Python

Python 3.6+:

>>> i = 240
>>> f'{i:x}'
'f0'

Solution 5 - Python

Old style string formatting:

In [3]: "%x" % 127
Out[3]: '7f'

New style

In [7]: '{:x}'.format(127)
Out[7]: '7f'

Using capital letters as format characters yields uppercase hexadecimal

In [8]: '{:X}'.format(127)
Out[8]: '7F'

[Docs][1] are here.

[1]: http://docs.python.org/2/library/string.html#format-specification-mini-language "New style string formatting"

Solution 6 - Python

'x' - Outputs the number in base 16, using lower-case letters for the digits above 9.

>>> format(3735928559, 'x')
'deadbeef'

'X' - Outputs the number in base 16, using upper-case letters for the digits above 9.

>>> format(3735928559, 'X')
'DEADBEEF'

You can find more information about that in Python's documentation:

Solution 7 - Python

Python 3's formatted literal strings (f-strings) support the Format Specification Mini-Language, which designates x for hexadecimal numbers. The output doesn't include 0x.

So you can do this:

>>> f"{3735928559:x}"
'deadbeef'

See the spec for other bases like binary, octal, etc.

Solution 8 - Python

While all of the previous answers will work, a lot of them have caveats like not being able to handle both positive and negative numbers or only work in Python 2 or 3. The version below works in both Python 2 and 3 and for positive and negative numbers:

Since Python returns a string hexadecimal value from hex() we can use string.replace to remove the 0x characters regardless of their position in the string (which is important since this differs for positive and negative numbers).

hexValue = hexValue.replace('0x','')

EDIT: wjandrea made a good point in that the above implementation doesn't handle values that contain 0X instead of 0x, which can occur in int literals. With this use case in mind, you can use the following case-insensitive implementation for Python 2 and 3:

import re
hexValue = re.sub('0x', '', hexValue, flags=re.IGNORECASE)

Solution 9 - Python

Decimal to Hexadecimal, it worked

hex(number).lstrip("0x").rstrip("L")

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmahmoodView Question on Stackoverflow
Solution 1 - PythonjamylakView Answer on Stackoverflow
Solution 2 - PythoneumiroView Answer on Stackoverflow
Solution 3 - PythonGuillaume LemaîtreView Answer on Stackoverflow
Solution 4 - PythonGringo SuaveView Answer on Stackoverflow
Solution 5 - PythonmsvalkonView Answer on Stackoverflow
Solution 6 - PythonMaciej BledkowskiView Answer on Stackoverflow
Solution 7 - PythonAmin Shah GilaniView Answer on Stackoverflow
Solution 8 - PythonAustin PattonView Answer on Stackoverflow
Solution 9 - PythonBaxromovView Answer on Stackoverflow