我正在尝试将字符串转换为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)
{
}
}
}
非常感谢您的帮助!
答案 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'答案。