【发布时间】:2017-02-15 16:41:30
【问题描述】:
我编写了一个函数来将字符串转换为十六进制字符串。所以“abc”将被转换为“616263”。
函数如下:
private string StringToHex(string myString)
{
int ctr, li_max;
string ls_hex = "";
li_max = myString.Length;
for(ctr = 0; ctr < li_max; ctr++)
ls_hex = ls_hex + (Convert.ToInt16(myString[ctr])).ToString("x2");
return ls_hex;
}
但是,当我有像“‹abc”这样的 unicode 字符时,我会得到“2039616263”。所以我的第一个字符被转换为 2039 (unicode)。我想得到“8B616263”(CP1252)。见下图:
如何获得正确编码的十六进制值?
即:8B 而不是 2039
【问题讨论】:
-
一旦字符串编码错误,您将无法恢复。因此,无论读取 byte[] 数组并转换为字符串的代码都必须修复以使用正确的编码。可能是读取需要修复的文件的代码。
标签: c# character-encoding