You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#代码仅输出字符串首字符ASCII十进制值的问题求助

解决C#只输出首字符ASCII值的问题

我明白你的问题了——你想要把输入的明文每个字符转成三位格式的ASCII十进制值,用空格分隔显示在文本框里,但现在代码只输出第一个字符的ASCII。这大概率是因为你只处理了字符串的第一个字符,没遍历所有字符,而且没做补零处理。

错误原因分析

比如你可能写了类似这样的代码:

string plaintext = "e 9aA";
int firstCharAscii = (int)plaintext[0];
txtResult.Text = firstCharAscii.ToString();

这种写法只会取plaintext的第一个字符(也就是'e',ASCII为101),自然只输出101,完全没处理后面的字符。

正确实现代码

下面是两种可以实现你需求的写法,都能遍历所有字符并生成三位格式的ASCII字符串:

写法1:foreach循环(更直观,适合新手)

// 假设plaintext是你的输入明文,txtResult是用来显示结果的文本框控件
string plaintext = "e 9aA"; // 替换成你的输入变量
List<string> formattedAsciiList = new List<string>();

foreach (char character in plaintext)
{
    // 将字符转为ASCII值,并格式化为三位数字(不足三位补前导零)
    string formattedAscii = ((int)character).ToString("D3");
    formattedAsciiList.Add(formattedAscii);
}

// 用空格拼接所有格式化后的字符串,赋值给文本框
txtResult.Text = string.Join(" ", formattedAsciiList);

写法2:LINQ简洁版(代码更紧凑)

如果你熟悉LINQ,可以用一行代码搞定:

txtResult.Text = string.Join(" ", plaintext.Select(c => ((int)c).ToString("D3")));

关键细节说明

  • 遍历所有字符:不管是foreach还是LINQ的Select,都会逐个处理字符串里的每一个字符,不会漏掉任何一个。
  • 三位格式补零:ToString("D3")是实现"032"这种格式的关键,它会把数字强制格式化为三位,前面补零,比如空格的ASCII是32,就会变成"032",而不是"32"。
  • 空格拼接:string.Join(" ", ...)会把所有三位的ASCII字符串用空格连接起来,生成你需要的"101 032 057 097 065"格式。

用上面的代码替换你原来的实现,就能得到预期的输出啦!

内容的提问来源于stack exchange,提问作者Troy E

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:58:22