如何在.NET中将字符串转换为ASCII

时间:2016-04-09 15:49:42

标签: c# .net winforms

我正在尝试将字符串转换为ASCII,我添加了一个转换为ASCII和2个文本框的按钮:

我应该得到什么的例子: 输入text@gg.com我需要:116 101 120 116 064 103 103 046 099 111 109 出于某种原因,我总是得到78-74-40-67-67-2E-63-6F-6D

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ascii
{
  public partial class WebForm1 : System.Web.UI.Page
  {

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        foreach (char c in TextBox1.Text)
        {
             TextBox3.Text = Encoding.ASCII.GetString(new byte[] { });
        }
    }

    protected void TextBox3_TextChanged(object sender, EventArgs e)
    {
    }

  }
}

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

假设您的字符串仅由ASCII字符组成,您可以使用:

protected void Button1_Click(object sender, EventArgs e)
{
    TextBox3.Text = string.Join(" ", TextBox1.Text.Select(c => (int)c));
}

如果您的字符串由非ASCII字符组成,则将返回其UTF-16代码单元。如果不希望这样,你应该包括一张支票:

    if (TextBox1.Text.Any(c => c > 127))
         TextBox3.Text = "Invalid string";

答案 1 :(得分:0)

假设您要将字符转换为ASCII并以十进制显示其代码:

protected void Button1_Click(object sender, EventArgs e)
{
    TextBox3.Text = String.Join(" ", Encoding.ASCII.GetBytes(TextBox1.Text));
}

请注意,此代码首先将文本转换为ASCII,其中仅包含0到127之间的字符,因此它取决于您的意思" ASCII"。如果您只想要代码点的Unicode数字表示,请使用Douglas'答案。