2017-04-12 239 views
1

下面是我在C#中的字符串,我将它转换为字符数组&,需要获取字符串中每个字符的ASCII值。如何获取C#中字符的ASCII值

static void Main(string[] args) 
    { 
     string s = "Test"; 
     var arr = s.ToCharArray(); 
     foreach(var a in arr) 
     { 
      var n = Encoding.ASCII.GetByteCount(a.ToString()); 
      Console.WriteLine(a); 
      Console.WriteLine(n); 
     } 
    } 

此输出为

T 
1 
e 
1 
s 
1 
t 
1 

在谷歌上搜索我的链接数量,但他们没有足够我的需要。

我需要得到的字符串中每个字符的ASCII值。???

任何帮助/建议高度赞赏。

+0

参见:http://stackoverflow.com/questions/5002909/getting -acc-sharp-string的字符值 – NoChance

回答

0

每个字符在ASCII表中用一个介于0和127之间的值表示。将字符转换为Integer,您将能够获得ASCII值。

static void Main(string[] args) 
     { 
      string s = "Test"; 
      for (int i = 0; i < s.Length; i++) 
       { 
        //Convert one by one every leter from the string in ASCII value. 
        int value = s[i]; 
        Console.WriteLine(value); 
       } 
     } 
+1

虽然此代码片段可能是解决方案,[包括解释](// meta.stackexchange.com/questions/114762/explaining-完全基于代码的答案)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Adam

2

GetByteCount将返回使用的字节数,因此对于每个字符它将是1个字节。

尝试GetBytes会

static void Main(string[] args) 
    { 
     string s = "Test"; 
     var n = ASCIIEncoding.ASCII.GetBytes(s); 
     for (int i = 0; i < s.Length; i++) 
     {     
      Console.WriteLine($"Char {s[i]} - byte {n[i]}"); 
     } 
    } 
+0

是的。正确的你和xanatos都足以满足我的需求。我在上传你的帖子,但我必须接受一个答案。你可以请检查他的帖子,并添加更好的输入 –

+0

对不起,firealarm刚刚在工作,所以我不得不离开现在的建筑! – Matt

+0

我认为他的建议更好,因为他不涉及额外的方法。 –

2

string可以直接枚举到IEnumerable<char>。并且每个char都可以被转换为整数以查看其UNICODE“值”(代码点)。 UTF-16将ASCII(0-127)的128个字符映射到UNICODE代码点0-127(例如参见https://en.wikipedia.org/wiki/Code_point),因此您可以直接打印此编号。

string s = "Test"; 
foreach (char a in s) 
{ 
    if (a > 127) 
    { 
     throw new Exception(string.Format(@"{0} (code \u{1:X04}) is not ASCII!", a, (int)a)); 
    } 
    Console.WriteLine("{0}: {1}", a, (int)a); 
} 
+0

是的。正确的你和马特都足以满足我的需求。我在上传你的帖子,但我必须接受一个答案。你可以请检查他的帖子,并添加更好的输入。我认为你是更好的,因为它不会; t涉及一个额外的方法调用你说什么 –

+1

我喜欢这个例外!但是,您将单个UTF-16代码单元放入消息字符串中,这可能在.NET中有效,但会打破一些预期。如果将其格式化为String.Format(@“\ u {0:X04} ...”,(int)a)',那么它仍然会被理解。 –

0
Console.WriteLine(a); 
Console.WriteLine(((int)a).ToString("X")); 

你需要在转换为int,然后在十六进制。

GetByteCount将返回使用的字节数,所以对于每个角色将是1

您还可以阅读:Need to convert string/char to ascii values