【发布时间】:2011-08-29 19:46:35
【问题描述】:
我有像“74657374696e67”(即“测试”)这样的字符串,十六进制编码的 unicode 文本。需要将其转换回可读输出。 如何在 .NET 中执行此操作?
更新:
文本最初是使用以下 Visual Basic 6 函数编码的:
Public Function EnHex(Data As String) As String
Dim iCount As Double, sTemp As String
Reset
For iCount = 1 To Len(Data)
sTemp = Hex$(Asc(Mid$(Data, iCount, 1)))
If Len(sTemp) < 2 Then sTemp = "0" & sTemp
Append sTemp
Next
EnHex = GData
Reset
End Function
解码如下:
Public Function DeHex(Data As String) As String
Dim iCount As Double
Reset
For iCount = 1 To Len(Data) Step 2
Append Chr$(Val("&H" & Mid$(Data, iCount, 2)))
Next
DeHex = GData
Reset
End Function
【问题讨论】:
-
十六进制数字表示字节,但 Unicode 文本最初是如何编码为字节的呢?有不止一种选择。
-
您引用的编码函数会误用高于 255 的 Unicode 代码点,因此您可以有效地假设您的十六进制字符串描述的是 Latin-1 文本而不是 Unicode。