C# 如何在.NET中将字符串转换为ASCII
我正在尝试将字符串转换为ASCII,并添加了一个转换为ASCII按钮和两个文本框: 我需要获得什么的示例: 输入text@gg.com我需要打电话:116 101 120 116 064 103 046 099 111 109 由于某种原因,我总是得到78-74-40-67-67-2E-63-6F-6DC# 如何在.NET中将字符串转换为ASCII,c#,.net,winforms,C#,.net,Winforms,我正在尝试将字符串转换为ASCII,并添加了一个转换为ASCII按钮和两个文本框: 我需要获得什么的示例: 输入text@gg.com我需要打电话:116 101 120 116 064 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
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)
{
}
}
}
非常感谢你的帮助 假设要将字符转换为ASCII并以十进制显示其代码:
protected void Button1_Click(object sender, EventArgs e)
{
TextBox3.Text = String.Join(" ", Encoding.ASCII.GetBytes(TextBox1.Text));
}
请注意,此代码首先将文本转换为ASCII,ASCII仅包含0到127之间的字符,因此它取决于“ASCII”的含义。如果只需要代码点的Unicode数字表示,请使用Douglas的答案。假设字符串仅由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";
字符串已经使用Unicode表示,Unicode是ASCII的超集。你到底想达到什么目的?是否将字符显示为ASCII码序列?除非TextBox3.Text包含有效数字,否则int.Parse将失败。您需要进一步解释您正试图做什么,因为您只能将字符串的字符转换为ascii int。您的意思是:
int.Parse(c)
?输出应该是什么样子?您确实需要展示一个示例,说明您在这里试图做什么。您正在将数字解析为字符吗?像ABC一样656667=>ABC?谢谢,它给我带来了消息error BitConverter.ToString(Encoding.ASCII.GetString(TextBox1.Text));“无法从字符串转换为字节[]”@user3385217抱歉,已编辑。位转换器的输出为十六进制。非常感谢!那么我得到这个的原因是什么:78-74-40-67-67-2E-63-6F-6D而不是这个:116 101 120 116 064 103 103 046 099 111 109?@user3385217——这是因为位转换器的输出是十六进制值而不是整数。