字符串 16 进制转换

字符串 16 进制转换


如何将字符串转成16进制 ? 

‘ 将字符串转成 16 进制字符串 
Private Function CvtString(ByVal strData As String) As String 
    Dim bytAry() As Byte ‘ 声明位数组 
    Dim strResult() As String ‘ 声明字符串数组 
    Dim lngUB As Long 
    Dim lngLoop As Long

    ‘ 使用 StrConv 函数 , 并将参数设定成 vbFromUnicode , 
    ‘ 把字符串由 Unicode 转成系统的默认符码对应页。 
    ‘ 并放进制元数组里 
    bytAry = StrConv(strData, vbFromUnicode)   
    lngUB = UBound(bytAry) ‘ 使用 UBound 函数取得数组最大上限 
    ‘ 用 ReDim 陈述式来重新配置动态数组变量的保存空间。 
    ReDim strResult(lngUB) As String ‘ 将字符串数组重新定义成位数组的最大上限 
    ‘ 使用 For Next 循环将每个位数组里之各元素转成16进制 
    For lngLoop = 0 To lngUB 
        strResult(lngLoop) = Hex(bytAry(lngLoop)) ‘ 使用 HEX 函数将数字以十六进制 
    Next 
    ‘ 使用Join 函数连结数组中多个子字符串并放至回传字符串里 
    CvtString = Join(strResult, Chr(255))  ‘ 用 Chr(255) 来连结每个元素 
    ‘ 使用 Erase 陈述式释放动态的保存空间 
    Erase bytAry 
    Erase strResult 

End Function

 ‘ 将16进制字符串还原 
Private Function RvtString(ByVal strData As String) As String 
    Dim varAry As Variant
    Dim varElement As Variant 
    Dim bytAry() As Byte  ‘ 声明位数组 
    Dim lngLoop As Long

     ‘ 使用 Split 函数, 将字符串以 Chr(255) 符隔开成从零开始的一维数组 
   varAry = Split(strData, Chr(255)) 

    ‘ 用 ReDim 陈述式来重新配置动态数组变量的保存空间。 
    ReDim bytAry(UBound(varAry)) As Byte  ‘ 重新定义位数组的最大上限 

    ‘ 使用 For Each 循环来将整个数组元素由16位转回
    For Each varElement In varAry 
        bytAry(lngLoop) = Val("&H" & varElement) 
        lngLoop = lngLoop + 1 
    Next 

    ‘ 使用 StrConv 函数 , 并将参数设定成 vbFromUnicode , 
    ‘ 把位数组内容据系统的默认符码对应页将字符串转成 Unicode。
    ‘ 并放字符串变量里回传 
    RvtString = StrConv(bytAry, vbUnicode)

     ‘ 使用 Erase 陈述式释放动态的保存空间 
   Erase bytAry

End Function 

Sample : 
    Dim strTest As String
    Dim strHexValue As String 
    strTest = "This is test !"
    strHexValue = CvtString(strTest) ‘ 将字符串转 16 进制 
    MsgBox strHexValue, , "16进制值"
    MsgBox RvtString(strHexValue), , "还原" ‘ 将字符串由 16 进制返回来