# Python chr() and ord()

Python’s built-in function chr() is used for converting an Integer to a Character, while the function ord() is used to do the reverse, i.e, convert a Character to an Integer.

Let’s take a quick look at both these functions and understand how they can be used.

## The chr() function

### Syntax

This takes in an integer `i` and converts it to a character `c`, so it returns a character string.

Format:

```c = chr(i)
```

Here is an example to demonstrate the same:

```# Convert integer 65 to ASCII Character ('A')
y = chr(65)
print(type(y), y)

# Print A-Z
for i in range(65, 65+25):
print(chr(i), end = " , ")
```

Output

```<class 'str'> A
A , B , C , D , E , F , G , H , I , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z
```

The valid range for the argument is from 0 through 1,114,111 (0x10FFFF in Hexadecimal). `ValueError` will be raised if the integer i is outside that range.

Let’s verify that with some examples

```print(chr(-1))
```

This will raise a `ValueError`.

```ValueError: chr() arg not in range(0x110000)
```
```start = 0
end = 1114111

try:
for i in range(start, end+2):
a = chr(i)
except ValueError:
print("ValueError for i =", i)
```

Output

```ValueError for i = 1114112
```

## The ord() function

The ord() function takes a string argument of a single Unicode character and returns its integer Unicode code point value. It does the reverse of `chr()`.

### Syntax

This takes a single Unicode character (string of length 1) and returns an integer, so the format is:

```i = ord(c)
```

To verify that it does the reverse of `chr()`, let us test the function using some examples.

```# Convert ASCII Unicode Character 'A' to 65
y = ord('A')
print(type(y), y)

alphabet_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

# Print 65-90
for i in alphabet_list:
print(ord(i), end = " , ")
```

Output

```<class 'int'> 65
65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 ,
```

This raises a `TypeError` if the length of the input string is not equal to one.

```y = ord('Hi')
```

Output

```TypeError: ord() expected a character, but string of length 2 found
```

## Passing Hexadecimal Data

We can also pass Integers represented in other common bases, such as Hexadecimal format (base 16) to chr() and ord().

In Python, we can use Hexadecimal by prefixing an integer with `0x`, provided it is within the 32/64 bit range for integer values.

```>>> print(hex(18))
'0x12'
>>> print(chr(0x12))
'\x12'
>>> print(ord('\x12'))
18
>>> print(int('\x12'))
18
```

We pass the integer 18 in hexadecimal format to `chr()`, which returns a hexadecimal `0x12`. We pass that to `chr()` and use `ord()` to get back our integer.

Note that we could also get the integer using `int()`, since a single character string is also a string, which can be a valid parameter to the above function.

## Conclusion

In this article, we learned about using `chr()` and `ord()` to convert Integers to Characters and vice-versa.