字串 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 進位傳回來