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

时间:2015-02-04 16:01:50

标签: vb.net

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

以下是我的工作方式:

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

然后我将s的值(即#34; 48656C6C6F")存储到数据库中。

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

1 个答案:

答案 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