Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tut] How to Convert Octal String to Integer in Python
1
How to Convert Octal String to Integer in Python

5/5 – (1 vote)

[Image: oct_to_int.gif]

Problem Formulation

Given a string in the octal form:

Code:
s = '0o77' # or s = '77'

How to convert the octal string to an integer in Python?

For example, you want to convert the octal string
Code:
'o10'
to the decimal integer
Code:
8
.

Here are a few other examples:

Octal String |
Decimal

Code:
'0o0'
|
0

Code:
'0o4'
|
4

Code:
'0o10'
|
8

Code:
'0o14'
|
12

Code:
'0o20'
|
16

Code:
'0o77'
|
63

Code:
'0o77777'
|
32767

Oct String to Integer using int() with Base 8

To convert an octal string to an integer, pass the string as a first argument into Python’sbuilt-in
Code:
int()
function. Use
Code:
base=8
as a second argument of the
Code:
int()
function to specify that the given string is an octal number. The
Code:
int()
function will then convert the octal string to an integer with base 10 and return the result.

Here’s a minimal example:

Code:
>>> int('0o77', base=8) 63
Examples

And here’s how you can convert the additional examples shown above:

Code:
>>> int('0o0', base=8) 0 >>> int('0o4', base=8) 4 >>> int('0o10', base=8) 8 >>> int('0o14', base=8) 12 >>> int('0o20', base=8) 16 >>> int('0o77', base=8) 63 >>> int('0o77777', base=8) 32767

You actually don’t need to use the prefix
Code:
'0o'
because your second argument already defines unambiguously that the given string is an octal number:

Code:
>>> int('0', base=8) 0 >>> int('4', base=8) 4 >>> int('10', base=8) 8 >>> int('14', base=8) 12 >>> int('20', base=8) 16 >>> int('77', base=8) 63 >>> int('77777', base=8) 32767

However, skipping the base but leaving the prefix raises a
Code:
ValueError: invalid literal for int() with base 10: '0o77'
:

Code:
>>> int('0o77') Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> int('0o77') ValueError: invalid literal for int() with base 10: '0o77'

It assumes that the input string is in base 10 when in fact, it isn’t.

[Image: 1f4a1.png] Note: Even though passing a prefixed string
Code:
'0o...'
into the
Code:
int()
function is unambiguous, Python’s
Code:
int()
function doesn’t accept it if you don’t also define the base. This may be fixed in future versions!

In fact, you can specify the base argument as to switch on base guessing—which should be the default behavior anyway! [Image: 1f447.png]

Base Guessing

You can pass a prefixed string
Code:
'0o...'
into the
Code:
int()
function and set the base to to switch on base guessing in Python. This uses the prefix to determine the base automatically—without you needing to set it to
Code:
16
. Yet, you still have to set it to so the benefit is marginal in practice.

Code:
>>> int('0o7', base=8) 7 >>> int('0o7', base=0) 7 >>> int('0o7', 0) 7
Converting Octal Literals to Int

[Image: image-40.png]

If you don’t have an octal string but a octal number—called a literal—such as
Code:
0xff
, you don’t even need the
Code:
int()
function because Python will automatically convert it to a decimal number:

Code:
>>> 0o743 483 >>> 0o7 7 >>> 0o10 8
Background int()

Code:
Syntax: int(value [, base]) – > int

Argument |
Code:
value
|
A Python object to be converted into an integer number. The value object must have an
Code:
__int__()
method that returns the associated integer number—otherwise a
Code:
TypeError
will be raised.

|
Code:
base
|
An optional integer argument
Code:
base
to define the base of the numerical system in the
Code:
value
argument. If you set the base, the
Code:
value
argument must be a string. The
Code:
base
argument determines how the string argument is interpreted.

Return Value |
Code:
int
|
Returns an integer number after converting the input argument
Code:
value
using its required
Code:
__int__()
method for the conversion.

[Image: lyteCache.php?origThumbUrl=https%3A%2F%2...efault.jpg]

Do you still need more background information about Python’s built-in
Code:
int()
function? No problem, read over the related tutorial.

[Image: 1f30d.png] Related Tutorial: Python’s Built-in
Code:
int()
Function
Reply

Users browsing this thread:
1 Guest(s)


Forum Jump: