# 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
```

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.