heethesh
heethesh

Reputation: 401

Integer to Hexadecimal Conversion in Python

a = 1
print hex(a)

The above gives me the output: 0x1

How do I get the output as 0x01 instead?

Upvotes: 6

Views: 18924

Answers (6)

Intrastellar Explorer
Intrastellar Explorer

Reputation: 2481

Here is f-string variant for Python 3.6+:

a = 1
print(f"{a:0>2x}")

Explanation of string formatting:

  • :: format specifier
  • 0: fill (with 0)
  • >: right-align field
  • 2: width
  • x: hex type

Source: 6.1.3.1 Format Specification Mini-Language

Upvotes: 0

khelwood
khelwood

Reputation: 59201

print "0x%02x"%a

x as a format means "print as hex".
02 means "pad with zeroes to two characters".

Upvotes: 2

Bhargav Rao
Bhargav Rao

Reputation: 52181

You can use format :

>>> a = 1
>>> '{0:02x}'.format(a)
'01'
>>> '0x{0:02x}'.format(a)
'0x01'

Upvotes: 14

Urban48
Urban48

Reputation: 1476

>>> format(1, '#04x') 
'0x01'

Upvotes: 3

runDOSrun
runDOSrun

Reputation: 11005

You can use format:

>>> "0x"+format(1, "02x")
'0x01'

Upvotes: 1

Sniggerfardimungus
Sniggerfardimungus

Reputation: 11782

Try:

print "0x%02x" % a

It's a little hairy, so let me break it down:

The first two characters, "0x" are literally printed. Python just spits them out verbatim.

The % tells python that a formatting sequence follows. The 0 tells the formatter that it should fill in any leading space with zeroes and the 2 tells it to use at least two columns to do it. The x is the end of the formatting sequence and indicates the type - hexidecimal.

If you wanted to print "0x00001", you'd use "0x%05x", etc.

Upvotes: 2

Related Questions