6
a = 1
print hex(a)

The above gives me the output: 0x1

How do I get the output as 0x01 instead?

1

6 Answers 6

14

You can use format :

>>> a = 1
>>> '{0:02x}'.format(a)
'01'
>>> '0x{0:02x}'.format(a)
'0x01'
Sign up to request clarification or add additional context in comments.

1 Comment

This should be preferred over the % methods (aka old-style formatting).
3
>>> format(1, '#04x') 
'0x01'

Comments

2

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.

Comments

2
print "0x%02x"%a

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

Comments

1

You can use format:

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

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.