Wednesday, February 22, 2012

How to convert a String (Char Array) to List of Int (ASCII Decimal Equivalent)

I think it confuses people that single characters are interchangeable with byte and int, so here I am telling you that they are interchangeable up to an ASCII limit of 128 characters. This means that you have 0 to 127 positive integers (characters) you can play with. Check out the table here.

One byte is 8 bits which is 2^8 which yields 256.

A signed integer (int) is 4 bytes long (32 bit) which is 2^32/2 - 1 which yields 2,147,483,647.

I am not saying: char == byte == int, but I am saying that they are interchangeable if used correctly. You can however say that a char < byte < int. In other words a char will fit in a byte or an int, and a byte will fit in an int, but not the reverse of that statement.

Here is a code example of converting a string to a List of int:

string temp = "ABC";

char[] arr = temp.ToCharArray();

List<int> lst = new List<int>();

foreach (char c in arr)
 lst.Add(c);

for (int i = 0; i < lst.Count; i++)
{
 Console.WriteLine("[{0}] = [{1}]", arr[i], lst[i]);
}

As you can see in the code above I am taking a character and storing it into a list of int. That is possible people of what I mentioned above. A character can fit into a int, and an integer up to the value of 127 can fit into a char.

This is particularly useful when you are trying to hash a string, serialize a string over a serial port or UART or do a number of other things.

No comments:

Post a Comment