将十六进制转换为字符串

时间:2019-04-23 12:05:43

标签: sql sql-server vbscript hex

我正在将VBScript Classic ASP中的字符串转换为十六进制,如下所示:

Function StringToHex(ByRef pstrString)
    Dim llngIndex
    Dim llngMaxIndex
    Dim lstrHex
    llngMaxIndex = Len(pstrString)
    For llngIndex = 1 To llngMaxIndex
        lstrHex = lstrHex & Right("0" & Hex(Asc(Mid(pstrString, llngIndex, 1))), 2)
    Next
    StringToHex = lstrHex
End Function

当我传递例如“ moe”的字符串时,我得到“ 6D6F65

现在,我正尝试使用SQL Server中的存储过程将此十六进制转换回字符串,如下所示:

convert(nvarchar, convert(varbinary, @Param,2))

但是它被转换为错误的中文字符串。

1 个答案:

答案 0 :(得分:2)

您的字符串是varchar而不是nvarchar。转换为正确的数据类型以获取正确的值:

convert(varchar, convert(varbinary, @Param,2))

db<>fiddle