chr() and ord()

Represent integers as characters and characters as integers

Created: July 5th 2019
Updated: December 7th 2019
Connect with us on

chr() and ord() are methods that allow you to represent integers as characters and characters as integers respectively in python. These functions rely on ASCII numbers to do the conversions.


Some terms to help you navigate the post


A built in function that takes an int (representing an ordinance/ASCII numbers) and returns a string of the corresponding single character. The inverse of the ord() function.

chr(65) # Returns 'A'
chr(97) # Returns 'a'


A built in function that takes a single character string and returns an int (representing its ordinance/ASCII numbers). The inverse of chr()

ord("A") # Returns 65
ord("a") # Returns 97

ASCII (American Standard Code for Information Interchange)

A look up table to standardize the representation of characters. For example the character 'a' is always 97 in ASCII and vice-versa.


In this repo you can see the demo code and actually run it by running python or python3

Real World Applications

The real world applications for these functions are usually very specific. Sometimes they are used to handle low-level character compatibility layers for legacy systems. But one simpler usage that i've run into, is for working with xlsx files.

xlsx files are the default Microsoft Excel extension files, in these files workbooks are ordered by row (numbers) and columns (letters). So to iterate through a set of rows you would need 'column_letter row_number' for example: "A1" --> "A2" --> "A3" etc. For rows you can iterate using ints, but for columns since they are individual characters to iterate you can convert them using ord and then increment/decrement and convert back to the correct character with chr.

For example:

import xlsxwriter # Third party module for working with xlsx files

filename = "data.xlsx"

workbook = xlsxwriter.Workbook(filename) # Create new workbook for data.xlsx
worksheet = workbook.add_worksheet() # Add a worksheet to put data into

data = [1,2,3,4] # list to iterate over

column = ord("A") # Initializing column counter: in this case 65

for number in data:
    worksheet.write("{}1".format(chr(column)), data[number]) # Writes data to A1, then B1, then C1 etc.
    column += 1

workbook.close() # Close workbook file and write data


A demo of the ord() and chr() functions in python
for ASCII table reference, please visit
__author__ = "Canadian Coding"

# chr() takes an int and returns the corresponding ASCII character
print(chr(65)) # prints 'A'
print(chr(97)) # prints 'a'

# ord() takes a one letter string and returns the corresponding ASCII number as an int
print(ord("A")) # Prints 65
print(ord("a")) # Prints 97

def alphabet_by_ord():
    """Goes through and prints the uppercase alphabet using ord() and chr()
    current_letter = ord('A') # Initialize to A
    for letter in range(1,27): #Iterates over all 27 letters of the alphabet
        current_letter += 1 # Move to next letters ordinance

def capitalize_by_ord(letter = "a"):
    """Converts lowercase characters to uppercase using ord() and chr()
    (str): A message with the upper and original case version of the letter
    uppercase_letter = ord(letter) - 32 # Decreasing letters ordinance by offset
    return "Letter {} converted to {}".format(letter, chr(uppercase_letter))


Thank you for your support!

Be sure to share the post if it was helpful!