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