2014-09-13 2 views
1

Привет Я пытаюсь расшифровать следующую строку 10410532119111114108100 Я просто закодированы в ASCII, теперь я хочу, чтобы преобразовать строку в виде обычного текста, а также, у меня есть следующий код:Decode ASCII в текст в C#

int texto = 10410532119111114108100; 
    string resultado = ""; 

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

    Console.WriteLine(resultado); 

но не работает, кто-то может мне помочь?

+1

Что такое 'texto'? Вы сказали, что это строка, но тип кода - int. – dieend

+0

Вы ничего нам не сказали о том, что означают цифры или как они сгруппированы. Сколько цифр представляет персонаж? – Dai

+0

Нет никаких шансов, что у вас есть целое число, длинное http://ideone.com/4xMQr3 «Я просто закодирован в ascii» --- как вы это сделали? – zerkms

ответ

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
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 

Оставляя в стороне проблему с синтаксисом языка , в вашем коде есть фундаментальная проблема. Каждый символ соответствует коду ASCII от 0 до 255. Например. «hi world» соответствует 104, 105, 32, 119, 111, 114, 108, 100. Если вы стираете пробелы между отдельными кодами и создаете одну длинную строку цифр, может быть более одного способа разбить ее на отдельные коды. Например. 10410532119111114108100 могут возникнуть из вашей исходной последовательности, но также из {104,10,53,21, 19 ...} или {10,4,105,32,11,91 ...) и т. Д. Поэтому нет способа конвертировать длинную строку цифр без пробелов обратно в символы.

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); 
}