您好我正在尝试解码以下字符串10410532119111114108100我只是在ascii编码,现在我想将字符串转换为纯文本,我有以下代码:
int texto = 10410532119111114108100;
string resultado = "";
resultado = resultado + System.Convert.ToChar(texto);
Console.WriteLine(resultado);
但不起作用,有人可以帮助我吗?
答案 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)
我认为您正在混合使用char
和char[]
...
首先,您的文字(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);
}