2016-12-06 78 views
0

爲什麼文本框中的符號與ascii表有不同的ascii值?
例如,我有這個符號(DEC從ASCII表= 137)在 文本框,我嘗試使用此代碼從文本框得到字節:爲什麼文本框中的符號與ascii表有不同的ascii值

Dim array() As Byte = System.Text.Encoding.ASCII.GetBytes(textbox.text) 

和i顯示了它在控制檯

Console.WriteLine(array(0)) 

結果是「48」,它應該是ASCII表中的137。

有人能告訴我發生了什麼嗎?

+0

48 =問號( 「?」) – hagant

+0

ASCII字符值使用七位,所以它們只能達到127.由於ASCII.GetBytes對此非常嚴格,它使用問號來表示錯誤字符。 –

+0

[ASCII](https://msdn.microsoft.com/en-us/library/system.text.encoding.ascii(v = vs.110).aspx)是一種7位編碼,不包含該字符,所以'GetBytes'返回回退字符(應該是0x3F「?」)。您可以嘗試使用'System.Text.Encoding.Default',而這將是您的系統的ANSI代碼頁,或者使用特定的單字節代碼頁。 – Mark

回答

0

我想嘗試做使用 '升序()' 來獲取ASCII參考的更優選的方法:

實施例:

Sub Main() 
    'Representations from ASCII Table http://www.asciitable.com/ 
    Dim perMile = Chr(137) 

    'Write it out as char array to prove it works 
    Console.WriteLine($"{perMile}") 

    'tell me the numbers I used dynamically 
    Dim perAsc = Asc(perMile) 
    Dim array() As Byte = Encoding.ASCII.GetBytes(perMile) 

    Console.WriteLine($"{perAsc} {array(0)}") 

    Console.ReadLine() 
End Sub