我有一个纯文本字符串,我将其转换为字节数组,然后转换为字符串并存储在数据库中。
以下是我的工作方式:
Dim b As Byte() = System.Text.Encoding.UTF8.GetBytes("Hello")
Dim s As String = BitConverter.ToString(b).Replace("-", "")
然后我将s的值(即#34; 48656C6C6F")存储到数据库中。
稍后,我想从数据库中检索此值并将其转换回" Hello"。我该怎么做?
答案 0 :(得分:2)
您可以使用十六进制字符串调用以下函数并获取" Hello"回到你身边。请注意,该函数不会验证输入,除非您确定输入有效,否则您需要添加验证。
Private Function HexToString(ByVal hex As String) As String
Dim result As String = ""
For i As integer = 0 To hex.Length - 1 Step 2
Dim num As Integer = Convert.ToInt32(hex.Substring(i, 2), 16)
result &= Chr(num)
Next
Return result
End Function
James Thorpe在评论中指出,使用Encoding.UTF8.GetString转换回字符串会更合适,因为这与用于创建十六进制字符串的方法相反。我同意,但由于我原来的答案已经被接受,我不愿意改变它,所以我要添加一个替代版本。关于跳过输入验证的说明仍然适用。
Private Function HexToString(ByVal hex As String) As String
Dim bytes(hex.Length \ 2 - 1) As Byte
For i As Integer = 0 To hex.Length - 1 Step 2
bytes(i \ 2) = Byte.Parse(hex.Substring(i, 2), System.Globalization.NumberStyles.HexNumber)
Next
Return System.Text.Encoding.UTF8.GetString(bytes)
End Function