我有一个设备发送表示其设置的字符串数据,但数据在字符串中以Unicode(?)表示形式编码。例如,设备发送表示字符串“System”的字符串“00530079007300740065006D”。 C#中是否有函数将把设备发送的字符串数据转换为实际的字符串?如果没有,有人可以告诉我如何最好地执行此转换?C# - 将字符串数据转换为实际字符串表示形式
2
A
回答
0
是的,.NET有一种内置的方法可以将给定的编码类型转换为另一种类型,比如UTF8-> ASCII或其他类型。您需要的命名空间是System.Text.Encoding
。
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());
这里的一个又一个,这也许是多了几分高尚在没有做哈克炭/ int cast:
string out2 =
Encoding.BigEndianUnicode.GetString(Enumerable.Range(0, input.Length/2)
.Select(idx => byte.Parse(input.Substring(idx * 2, 2),
NumberStyles.HexNumber)).ToArray());
1
完全跳上@威尔迪恩的解决方案在这里(所以不要标记为答案)。
如果你使用了威尔的解决方案很多,我建议它包装成一个字符串扩展:
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());
}
}
相关问题
- 1. 将单词的整数表示形式转换为字符串
- 2. 将输入字符串转换为六位数表示形式
- 3. 将表达式转换为字符串表示形式?
- 4. C#将字节数组与字符串转换为字符串
- 5. 将字符串转换为字符串
- 6. 将字节转换为实际字节类型的字符串
- 7. 如何将字符串的二进制表示形式转换回字符串?
- 8. 将unicode字符串转换为十六进制表示形式
- 9. 将Python字符串转换为其ASCII码表示形式
- 10. 解密CLOB数据(以字符串形式),以实际字符串的
- 11. 将JSON字符串转换为C#字符串数组
- 12. 将表达式转换为字符串
- 13. 将字符串数组转换为JSON格式的字符串
- 14. 将字符串文字转换为实际值
- 15. Flex将数字字符串转换为指数形式
- 16. 如何将数据框转换为RDD [字符串,字符串]?
- 17. 将字符串转换为整数C#
- 18. InfixToPostfix将字符转换为字符串
- 19. 将字典<字符串,字符串>转换为数组
- 20. 将字符串转换为字符
- 21. 将字符串转换为数据集
- 22. .NET将数字转换为字符串表示形式(1对1,2对2等)
- 23. 将ASCII字符串转换为USB UTF16字符串格式表示为使用shell命令的shell字符串
- 24. 将字符串转换为格式为
- 25. 无法将类型'字符串'隐式转换为'字符串'
- 26. 将字符串转换为字符
- 27. CMake的函数字符串转换为C字符串字面
- 28. 将字符串转换为字列表?
- 29. 从字符串转换为字符 - C++
- 30. 将字符串列表转换为字符串列表
有可能是一个内置的功能,但不知道编码“系统”的手段,该字符串其很难给你一个明确的解决方案。 – Jamiec 2010-07-30 14:48:51
回答上面我自己的意见。它绝对是十六进制。 – Jamiec 2010-07-30 15:06:41