2014-09-13 93 views
1

嗨,我想下面的字符串10410532119111114108100解碼我只是ASCII編碼,現在我想一個字符串,以純文本轉換爲好,我有以下代碼:解碼ASCII到文本C#

int texto = 10410532119111114108100; 
    string resultado = ""; 

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

    Console.WriteLine(resultado); 

但不起作用,有人可以幫助我嗎?

+1

什麼是'texto'?你說它是字符串,但代碼中的類型是int。 – dieend 2014-09-13 02:05:41

+0

你還沒有告訴我們任何有關數字的含義或如何分組。多少個數字代表一個角色? – Dai 2014-09-13 02:05:53

+0

你沒有機會得到一個很長的整數http://ideone.com/4xMQr3「我只是用ascii編碼」---你是怎麼做到的? – zerkms 2014-09-13 02:06:40

回答

0

我認爲你是混合charchar[] ...

首先,你的文字(texto)是int,但它太大了,一個開始說起。

其次,System.Convert.ToChar()期望將某些東西轉換爲Unicode字符(僅1),因此將它傳遞給一個無效(按大小)開頭的int是完全錯誤的。

看看ToChar看看它是如何使用的。

假設你只是轉換一個字符串轉換成char值,我想你的字符串分手喜歡的東西:

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 

撇開與語言的語法問題,你的代碼中存在一個基本問題。每個字符對應於從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 ...)等,因此,沒有辦法將不含空格的長數字字符串轉換回字符。

0

你可以在這裏休閒一個簡單的模式。 http://www.asciitable.com/index/asciifull.gif

而我的方式不是完全覆蓋所有的可能性,但它是簡單的文本的解決方案:我有同樣的問題

這是ASCII表中遇到。

下面是代碼:

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