2015-12-24 36 views
1

我正在爲Alt代碼轉換器創建一個字符。我需要知道如何從char獲取Alt代碼。獲取字符的Alt代碼

編輯: 如果沒有人知道的Alt碼是什麼,它是Alt鍵 + + = $。在評論中嘗試一下。如果您使用Mac,you can't do it like me。編輯2: 將ASCII字符轉換爲整數不工作

+0

你想支持什麼樣的字符?你想支持哪種類型的Alt代碼? – CodeCaster

回答

4

對於Windows中的任何GUI應用程序,使用數字鍵盤輸入的代碼將根據機器的默認代碼頁進行解釋。在西歐和美洲,可能靠近你的家,像你的名字一樣,它將是Windows-1252。但不是在俄羅斯,東歐,中東等。

使用Encoding.Default.GetBytes()可以避免依賴於默認代碼頁。如果獲得的byte []包含0x3f('?')或多個元素,則不能輸入。

請小心控制檯模式應用程序的麻煩。他們通常使用傳統的MS-Dos代碼頁編碼運行,437在你的脖子上,但在世界的另一個地方又是一個非常不同的東西。 Alt-code現在生成一個非常不同的字符,由Console.OutputEncoding確定。你如何解決這個問題在這個問題上並不明顯,我想你需要知道什麼特定的進程會消耗代碼。如果開始覺得這個項目是一個錯誤,那麼你的方向是正確的。

+1

我認爲這個項目是一個錯誤。老實說,我很無聊,爲了好玩而開始這項工作,但它開始成爲一個讓我想要扯掉我的頭髮的項目! –

0

alt代碼只是一個char的十進制數,所以你基本上只需要將char轉換爲數字。您可以使用轉換方法將其轉換爲int,但您必須調用方法。實際上,你可以簡單地將它轉換爲十進制,並知道該做什麼。

static void Main(string[] args) 
    { 
     char input = '$'; 

     decimal output = input; 

     Console.WriteLine(output); 
    } 
+1

@David你確定嗎?這將爲您提供Unicode代碼點。例如,字符'È'具有代碼200.然而,Alt代碼具有各種類別。要輸入'È',您可以使用「Alt + 0200」,但不能使用三位數的Alt代碼輸入。 – CodeCaster

+0

@CodeCaster剛剛意識到,放在È,給了我200這是╚。這給了我9562等... –

+0

@DavidWheatley這一切都取決於你的範圍是什麼。如果你需要擴展ascii字符,那麼你可能需要一些更聰明的東西,但如果你只想處理基本的127 ascii圖表,那麼是否有任何一點複雜化? – Keithin8a