2016-12-30 85 views
-3

我有一個特定字符'š',我需要它在wchar_t類型中的表示形式,表示一個UTF-16 Unicode字符,所以我可以將它作爲wParam和WM_CHAR消息發送給Winapi SendMessage函數。這個字符的兩個字節表示是字節[] {97,1}將特定字符轉換爲int

我需要的int是154.但是對於下面的代碼,我總是得到353.任何想法如何獲得154而不是353?

char ch = 'š'; 
byte[] charByte = Encoding.Unicode.GetBytes(ch); // reults in byte[] { 97, 1 } 

int charInt = BitConverter.ToInt32(charCode, 0); // results in 353, but 154 is correct 
+0

'(int)'š''似乎也返回353。所以'(int)char.ConvertFromUtf32((int)'''[0]'。不完全確定如何,爲什麼和你想要完成什麼。你是否嘗試過使用'353'並看看你會得到什麼?可能工作。 – devRicher

+0

爲什麼它應該返回154? – CodingYoshi

+0

使用'Encoding'和'BitConverter'也會返回353.爲什麼你需要特別的154? – Abion47

回答

2

也許,你正在尋找的Win-1252(不統一,但ANSI代碼頁)或類似編碼:

byte result = Encoding.GetEncoding(1252).GetBytes('š'.ToString())[0]; 

// 154 
Console.Write(result); 

請,通知,你應該解碼string'š'.ToString())而不是char

+0

這是1250,但是,是的,你是對的。謝謝。 –

2

353是UTF-16中該字符的正確值。 154的值是針對Windows ANSI代碼頁中的一個。