tags:

views:

2035

answers:

7

VB has a couple of native functions for converting a char to an ASCII value and vice versa - Asc() and Chr().

Now I need to get the equivalent functionality in C#. What's the best way?

+9  A: 

For Asc() you can cast the char to an int like this:

int i = (int)your_char;

and for Chr() you can cast back to a char from an int like this:

char c = (char)your_int;

Here is a small program that demonstrates the entire thing:

using System;

class Program
{
    static void Main()
    {
     char c = 'A';
     int i = 65;

        // both print "True"
     Console.WriteLine(i == (int)c);
     Console.WriteLine(c == (char)i);
    }
}
Andrew Hare
+3  A: 

You can use the Convert class. From char to ascii:

int asciiValue = Convert.ToInt32('a');

And then back from ascii value to char:

char c = Convert.ToChar(asciiValue);
Razzie
Whoa - I accidentally edited your answer instead of mine!! Sorry about that!
Andrew Hare
Heh, it's ok. As long as it's for the better ;-)
Razzie
A: 

For Chr() you can use:

char chr = (char)you_char_value;
Cheesy
A: 

Try this...

sum += (int) str[i];
kevchadders
+1  A: 

Given char c and int i, and functions fi(int) and fc(char):

From char to int (analog of VB Asc()): explicitly cast the char as an int: i = (int) c;

or mplicitly cast (promote): fi(c), i+= c;

From int to char (analog of VB Chr()):

explicitly cast the int as an char: c = (char) i, fc( (char) i);

An implicit cast is disallowed, as an int is wider (has a greater range of values) than a char

tpdi
+1  A: 

You could always add a reference to Microsoft.VisualBasic and then use the exact same methods: Strings.Chr and Strings.Asc.

That's the easiest way to get the exact same functionality.

Garry Shutler
Except that Strings class doesn't exist inside .NET 2008... :(
Shaul
If you add a reference, it will exist.
Samuel
A: 

How would I do this WITHOUT using Chr() or Asc()?

I want to use true vb.net functions only.

Dim n As Int16

Dim s As String = "A"

n= Asc(s) ' n will now equal 65

s = Chr(n) ' s will now equal "A"

Donna