将字节数组的字符串转换回 vb.net 中的原始字符串

Convert string of byte array back to original string in vb.net

我有一个纯文本字符串,我正在将其转换为字节数组,然后转换为字符串并存储在数据库中。

这是我的做法:

    Dim b As Byte() = System.Text.Encoding.UTF8.GetBytes("Hello")
    Dim s As String = BitConverter.ToString(b).Replace("-", "")

然后我将 s 的值(即“48656C6C6F”)存储到数据库中。

稍后,我想从数据库中检索此值并将其转换回 "Hello"。我该怎么做?

您可以使用您的十六进制字符串调用以下函数并得到 "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 在他的评论中指出,使用编码更合适。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