# How to Convert a Python String to int

Watch Now This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Convert a Python String to int

Integers are whole numbers. In other words, they have no fractional component. Two data types you can use to store an integer in Python are `int` and `str`. These types offer flexibility for working with integers in different circumstances. In this tutorial, you’ll learn how you can convert a Python string to an `int`. You’ll also learn how to convert an `int` to a string.

By the end of this tutorial, you’ll understand:

• How to store integers using `str` and `int`
• How to convert a Python string to an `int`
• How to convert a Python `int` to a string

Let’s get started!

## Representing Integers in Python#

An integer can be stored using different types. Two possible Python data types for representing an integer are:

For example, you can represent an integer using a string literal:

>>>
``````>>> s = "110"
``````

Here, Python understands you to mean that you want to store the integer `110` as a string. You can do the same with the integer data type:

>>>
``````>>> i = 110
``````

It’s important to consider what you specifically mean by `"110"` and `110` in the examples above. As a human who has used the decimal number system for your whole life, it may be obvious that you mean the number one hundred and ten. However, there are several other number systems, such as binary and hexadecimal, which use different bases to represent an integer.

For example, you can represent the number one hundred and ten in binary and hexadecimal as 1101110 and 6e respectively.

You can also represent your integers with other number systems in Python using the `str` and `int` data types:

>>>
``````>>> binary = 0b1010
``````

Notice that `binary` and `hexadecimal` use prefixes to identify the number system. All integer prefixes are in the form `0?`, in which you replace `?` with a character that refers to the number system:

• b: binary (base 2)
• o: octal (base 8)
• d: decimal (base 10)

Now that you have some foundational knowledge about how to represent integers using `str` and `int`, you’ll learn how to convert a Python string to an `int`.

## Converting a Python String to an `int`#

If you have a decimal integer represented as a string and you want to convert the Python string to an `int`, then you just pass the string to `int()`, which returns a decimal integer:

>>>
``````>>> int("10")
10
>>> type(int("10"))
<class 'int'>
``````

By default, `int()` assumes that the string argument represents a decimal integer. If, however, you pass a hexadecimal string to `int()`, then you’ll see a `ValueError`:

>>>
``````>>> int("0x12F")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '0x12F'
``````

The error message says that the string is not a valid decimal integer.

When you pass a string to `int()`, you can specify the number system that you’re using to represent the integer. The way to specify the number system is to use `base`:

>>>
``````>>> int("0x12F", base=16)
303
``````

Now, `int()` understands you are passing a hexadecimal string and expecting a decimal integer.

Great! Now that you’re comfortable with the ins and outs of converting a Python string to an `int`, you’ll learn how to do the inverse operation.

## Converting a Python `int` to a String#

In Python, you can convert a Python `int` to a string using `str()`:

>>>
``````>>> str(10)
'10'
>>> type(str(10))
<class 'str'>
``````

By default, `str()` behaves like `int()` in that it results in a decimal representation:

>>>
``````>>> str(0b11010010)
'210'
``````

In this example, `str()` is smart enough to interpret the binary literal and convert it to a decimal string.

If you want a string to represent an integer in another number system, then you use a formatted string, such as an f-string (in Python 3.6+), and an option that specifies the base:

>>>
``````>>> octal = 0o1073
>>> f"{octal}"  # Decimal
'571'
'23b'
>>> f"{octal:b}"  # Binary
'1000111011'
``````

`str` is a flexible way to represent an integer in a variety of different number systems.

## Conclusion#

Congratulations! You’ve learned so much about integers and how to represent and convert them between Python string and `int` data types.

In this tutorial, you learned:

• How to use `str` and `int` to store integers
• How to specify an explicit number system for an integer representation
• How to convert a Python string to an `int`
• How to convert a Python `int` to a string

Now that you know so much about `str` and `int`, you can learn more about representing numerical types using `float()`, `hex()`, `oct()`, and `bin()`!

Watch Now This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Convert a Python String to int

🐍 Python Tricks 💌

Get a short & sweet Python Trick delivered to your inbox every couple of days. No spam ever. Unsubscribe any time. Curated by the Real Python team. Alex Ronquillo is a Software Engineer at thelab. He’s an avid Pythonista who is also passionate about writing and game development.

Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are: 