在C#中将ASCII解码为文本

时间:2014-09-13 02:01:57

标签: c#

您好我正在尝试解码以下字符串10410532119111114108100我只是在ascii编码,现在我想将字符串转换为纯文本,我有以下代码:

    int texto = 10410532119111114108100;
    string resultado = "";

    resultado = resultado + System.Convert.ToChar(texto);

    Console.WriteLine(resultado);

但不起作用,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

var asciiBytes = new byte[] { 104, 105, 32, 119, 111, 114, 108, 100 };
var text = System.Text.Encoding.ASCII.GetString(asciiBytes);
Console.WriteLine(text);

打印

hi world

不考虑语言语法问题,代码中存在一个基本问题。每个字符对应于0到255的ASCII码。例如。 “hi world”对应于104,105,32,119,111,114,108,100。如果您删除单个代码之间的空格并创建一个长串数字,可能有多种方法可以将其分解为个体码。例如。 10410532119111114108100可能来自你的原始序列,也来自{104,10,53,21,19 ...}或{10,4,105,32,11,91 ...)等。因此,没有办法将没有空格的长字符串转换回字符。

答案 1 :(得分:0)

我认为您正在混合使用charchar[] ...

首先,您的文字(texto)是一个int,但它对于一个人来说太大了。

其次,System.Convert.ToChar()期望将某些东西转换为Unicode字符(仅为1),因此传递一个无效(大小)开头的int是完全错误的。

请查看ToChar,看看它是如何使用的。

假设您刚刚将字符串转换为字符串值,我尝试将字符串分解为:

var list = new List<int>{104,105,321,191,111,141,081,00};

foreach (var element in list)
{
    Console.Out.WriteLine(Convert.ToChar(element));
}
// will output ->  hiŁ¿oQ□ . Doubt it's what you've encoded though

答案 2 :(得分:0)

你可以在这里放一个简单的模式。我遇到了同样的问题

这是ascii表:http://www.asciitable.com/index/asciifull.gif

我的模式并未完全涵盖所有可能性,但它是简单文本的解决方案。

以下是代码:

string input = "10410532119111114108100";
string playground = input;
string result = "";
while (playground.Length > 0)
{
  int temp = Convert.ToInt32(playground.Substring(0, 2));
  if (temp < 32)
  {
     temp = Convert.ToInt32(playground.Substring(0, 3));
  }
  result += (Convert.ToChar(temp)).ToString();
  playground = playground.Substring(temp.ToString().Length, playground.Length - temp.ToString().Length);
}