在c#中将字符转换为CP1252 Hex

时间:2017-02-15 16:41:31

标签: c# character-encoding

我编写了一个将字符串转换为十六进制字符串的函数。所以" 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;
    }

然而,当我有像#34;

enter image description here

如何获取正确编码的十六进制值?
即:8B而不是2039

1 个答案:

答案 0 :(得分:2)

您需要使用CP1252编码来获取字符串的字节:

private string StringToHex(string myString)
{
    byte[] bytes = Encoding.GetEncoding(1252).GetBytes(myString);
    return string.Concat(bytes.Select(b => b.ToString("X2")));
}

我的输出是

  

8B616263