将特定char转换为int

时间:2016-12-30 22:15:39

标签: c# winapi encoding

我有一个特定的字符'š',我需要在wchar_t类型中表示,表示UTF-16 Unicode字符,因此我可以将它作为wParam和WM_CHAR消息提供给Winapi SendMessage函数。这个char的两个字节表示是byte [] {97,1}

我需要的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

2 个答案:

答案 0 :(得分:2)

或许,您正在寻找 Win-1252 (不是 Unicode ,而是 ANSI 代码页)或类似的编码:

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

 // 154 
 Console.Write(result);

请注意,您应该解码string'š'.ToString())而不是char

答案 1 :(得分:2)

353是UTF-16中该字符的正确值。值154表示Windows ANSI代码页之一。