我有一个特定的字符'š',我需要在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
答案 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代码页之一。