# Convert integer into its character equivalent, where 0 => a, 1 => b, etc

## Convert integer into its character equivalent, where 0 => a, 1 => b, etc

I want to convert an integer into its character equivalent based on the alphabet. For example:
0 => a
1 => b
2 => c
3 => d

etc. I could build an array and just look it up when I need it but I’m wondering if there’s a built in function to do this for me. All the examples I’ve found via Google are working with ASCII values and not a character’s position in the alphabet.

### Solution 1:

Assuming you want lower case letters:

``````var chr = String.fromCharCode(97 + n); // where n is 0, 1, 2 ...
``````

97 is the ASCII code for lower case ‘a’. If you want uppercase letters, replace 97 with 65 (uppercase ‘A’). Note that if `n > 25`, you will get out of the range of letters.

### Solution 2:

Will be more portable in case of extending to other alphabets:

``````char='abcdefghijklmnopqrstuvwxyz'[code]
``````

or, to be more compatible (with our beloved IE):

``````char='abcdefghijklmnopqrstuvwxyz'.charAt(code);
``````

### Solution 3:

If you don’t mind getting multi-character strings back, you can support arbitrary positive indices:

``````function idOf(i) {
return (i >= 26 ? idOf((i / 26 >> 0) - 1) : '') +  'abcdefghijklmnopqrstuvwxyz'[i % 26 >> 0];
}

idOf(0) // a
idOf(1) // b
idOf(25) // z
idOf(26) // aa
idOf(27) // ab
idOf(701) // zz
idOf(702) // aaa
idOf(703) // aab
``````

(Not thoroughly tested for precision errors 🙂

Related:  Enable :focus only on keyboard use (or tab press)

### Solution 4:

A simple answer would be (26 characters):

``````String.fromCharCode(97+n);
``````

If space is precious you could do the following (20 characters):

``````(10+n).toString(36);
``````

Think about what you could do with all those extra bytes!

How this works is you convert the number to base 36, so you have the following characters:

``````0123456789abcdefghijklmnopqrstuvwxyz
^         ^
n        n+10
``````

By offsetting by 10 the characters start at `a` instead of .

Not entirely sure about how fast running the two different examples client-side would compare though.

### Solution 5:

Javascript’s String.fromCharCode(code1, code2, …, codeN) takes an infinite number of arguments and returns a string of letters whose corresponding ASCII values are code1, code2, … codeN. Since 97 is ‘a’ in ASCII, we can adjust for your indexing by adding 97 to your index.

``````function indexToChar(i) {
return String.fromCharCode(i+97); //97 in ASCII is 'a', so i=0 returns 'a',
// i=1 returns 'b', etc
}
``````

### Solution 6:

Use `String.fromCharCode`. This returns a string from a Unicode value, which matches the first 128 characters of ASCII.

``````var a = String.fromCharCode(97);
``````