2017-09-26 134 views
-1

我有一個函數,轉換string to ascii code(例如string = "system"字符串的值在ascii = "115 121 115 116 101 109"),我需要的是一種方法來將`ascii轉換爲字符。我是否需要使用循環來過濾轉換後的ASCII碼?我需要你的建議是什麼轉換的最佳方式,它多個ascii代碼轉換爲字符

+1

爲什麼不改變所提到的函數來返回char數組而不是字符串,以後如果想將整個事物表示爲字符串,則可以加入數組。 –

回答

1

我的建議是:

首先拆分使用string.split(' ');

然後將每個分割字符串爲char像這樣的字符串:

foreach(string word in SplitedWords) 
{ 
    Convert.ToChar(int.Parse(word)); 
} 
+0

我很欣賞你的答案,即使它在C#中。我得到了我真正想要的輸出。謝謝 –

0

這是內置的。您可以將String視爲Char的數組。

Dim s As String = "system" 
Console.WriteLine(s(4) & " = ASCII " & Asc(s(4))) 'output: e = ASCII 101  
Console.ReadKey() 

可以使用Asc()函數獲取字符的ASCII值,但要知道,String S和Char s爲實際的Unicode,不ASCII。根據編碼的不同,您可能會發現一個字符不止一個字節。

對於使用者:將String作爲Char的數組處理時,編譯器會將String對齊,因此具有真實的Char數組的效率較低。

+0

我不明白。你能否請進一步解釋?因爲我需要的是將數據類型字符串中的ascii值轉換爲 –

+0

我已經更新了我的回答 – SSS

+0

'Asc'可能不會做你認爲它的作用。但是,如果字符串中的所有Char都表示[C0和基本拉丁語](http://www.unicode.org/charts/nameslist/index.html)塊中的Unicode碼位,則您將得到相同的結果。儘管如此,最好避免與用戶的/系統的/線程的當前默認ANSI代碼頁有關,除非這正是需求所要求的。 (自VB4開始適用) –

2

最好的方法是檢查你的假設。你說這個字符串包含ASCII字節。所以如果有人滑入一個不能成爲ASCII的字節,應該告訴你。看起來似乎有人在意想不到的空間中滑倒,但可以忽略。

Imports System.Linq 
'… 

Dim asciiEncoding = Encoding.GetEncoding("US-ASCII", 
    EncoderFallback.ExceptionFallback, 
    DecoderFallback.ExceptionFallback) 

Dim ascii = "115 121 115 116 101 109" 
Dim asciiBytes = ascii.Split({ " "c }, StringSplitOptions.RemoveEmptyEntries) _ 
    .Select(Function (s) Byte.Parse(s)) _ 
    .ToArray() 
Dim s = asciiEncoding.GetString(asciiBytes) 

其他方式可能無法趕上無效數據。

有些方法可以自動從ASCII字符集轉換爲Unicode字符集,當數據實際上是ASCII碼時,該字符集有效,但至少應該對轉換進行評論,並且該數據可信任爲ASCII。

說到數據是不是ASCII碼,沒有文本,但沒有編碼文本。當你閱讀文本時,你必須使用它編寫的編碼。要知道的唯一方法是讓作者知道它。

+0

是的,字符編碼是一個難以避免的兔子洞。 – SSS

相關問題