2012-05-27 89 views
0

下面的行不會將任何內容寫入文件ascii.txt。試圖寫出十六進制「88」的ascii等價物。然而,沒有任何內容寫入文件,也沒有任何內容被分配給變量ascii。對應於十六進制的ASCII值

Dim ascii = ChrW(Convert.ToInt32("88", 16)) 
My.Computer.FileSystem.WriteAllText("e:\ascii.txt", ascii, True) 

在excel或openoffice中,可以使用下面的公式獲得ascii等價物。代碼有什麼問題?

=CHAR(HEX2DEC("88")) 
+3

88進制= 136(十進制)。這不是ASCII。 –

回答

4

ChrW不知道ASCII碼,它只知道Unicode碼點。

U+0088是一個控制字符,它是不可打印的(即它通常不對應於可顯示的字符)。因此,文件顯示爲空是不足爲奇的。

此外,即使ChrW使用ASCII,字符0x88是而不是 ASCII,它在它的範圍之外。如果你在談論前標準的Windows字符集,代碼頁1252,可以使用下面的代碼來獲取字符代碼的字符串表示:

Dim bytes = New Byte() { &H88 } 
Dim text = System.Text.Encoding.GetEncoding(1252).GetString(bytes)