C# - 将字符串数据转换为实际的字符串表示形式

时间:2010-07-30 14:41:19

标签: c# c#-4.0

我有一个设备发送表示其设置的字符串数据,但数据在字符串中编码为unicode(?)表示。例如,设备发送字符串“00530079007300740065006D”,表示字符串“System”。 C#中是否内置了将设备发送的字符串数据转换为实际字符串的功能?如果没有,有人可以告诉我如何最好地执行此转换吗?

3 个答案:

答案 0 :(得分:1)

这不是内置函数,但只有一行代码:

string input = "00530079007300740065006D";

String output = new String(Enumerable.Range(0, input.Length/4)
     .Select(idx => (char)int.Parse(input.Substring(idx *  4,4),
           NumberStyles.HexNumber)).ToArray());

这是另一个,在没有做hacky char / int演员的情况下可能更高尚一点:

string out2 =
   Encoding.BigEndianUnicode.GetString(Enumerable.Range(0, input.Length/2)
     .Select(idx => byte.Parse(input.Substring(idx * 2, 2),
          NumberStyles.HexNumber)).ToArray());

答案 1 :(得分:1)

在这里完全跳过@Will Dean的解决方案潮流(所以不要把我当作答案)。

如果您正在使用Will的解决方案,我建议将其包装成字符串扩展名:

public static class StringExtensions
{
    public static string HexToString(this string input)
    {
        return new String(Enumerable.Range(0, input.Length/4)
                              .Select(idx => (char) int.Parse(input.Substring(idx*4,4),
                                                              NumberStyles.HexNumber)).ToArray());
    }
}

答案 2 :(得分:0)

是的,.NET有一种内置的方式可以从给定的编码类型转移到另一种类型,比如UTF8 - > ASCII或某些。您需要的名称空间为System.Text.Encoding