【发布时间】:2018-10-11 10:18:09
【问题描述】:
我知道如何将字符转换为十六进制。但是当涉及到特殊的 char 正常转换方法时是行不通的。
' 的十六进制值为 91 参考:http://www.aboutmyip.com/AboutMyXApp/AsciiChart.jsp
我的代码
string text = "‘";
char[] chars = text.ToCharArray();
StringBuilder stringBuilder = new StringBuilder();
foreach (char c in chars)
{
stringBuilder.Append(((Int16)c).ToString("x"));
}
String textAsHex = stringBuilder.ToString();
我得到的是 2018 年的输出,但我应该得到的是 91
【问题讨论】:
-
检查这是否有帮助 - stackoverflow.com/questions/40967540/…
-
这不是撇号 (U+0091),它是代码点 U+2018 处的左单引号(又名“开卷引号”)。
-
只是想:您是在考虑 Windows 代码页而不是 Unicode?所有 .NET 字符串都是 Unicode,当您使用
Encoding.ASCII加载时,超过 0x7f 的“扩展 ASCII”字符将被转换为它们的 Unicode 等价物。 -
ASCII 是 7 位编码。 0x7F 以上的值在字节大小的字符中代表什么取决于代码页。
-
具体:Windows-1250 code page的0x91位置的字符在Uncode differently中表示,.