在VB6中将字符串转换为字节,并在第0个索引中包含& H81

时间:2016-05-31 07:19:11

标签: vb6

如果字节数组mybyte(0)带

,如何将字符串输入转换为包含& H81在第一个索引中的字节数组

我需要检查我的字节数组

Private Declare Sub CopyMemory _
            Lib "kernel32" _
            Alias "RtlMoveMemory" (Destination As Any, _
                                   Source As Any, _
                                   ByVal Length As Long)
Private Sub cmdCommand1_Click()
    Dim str  As String
    Dim BT() As Byte

   BT() = StrToByte(tbMsg.Text)

   If BT(0) = &H81 Then
      'MyCode
   End If

End Sub
  

如果mybyte(0)=& H81那么条件是缓和变为

目前我正在使用此字符串到字节转换方法

Public Function StrToByte(strInput As String) As Byte()
    Dim lPntr    As Long
    Dim bTmp()   As Byte
    Dim bArray() As Byte

    If Len(strInput) = 0 Then Exit Function
        ReDim bTmp(LenB(strInput) - 1) 'Memory length
        ReDim bArray(Len(strInput) - 1) 'String length
        CopyMemory bTmp(0), ByVal StrPtr(strInput), LenB(strInput)

    For lPntr = 0 To UBound(bArray)

        If bTmp(lPntr * 2 + 1) > 0 Then
            bArray(lPntr) = Asc(Mid$(strInput, lPntr + 1, 1))
        Else
            bArray(lPntr) = bTmp(lPntr * 2)
        End If
    Next lPntr

   StrToByte = bArray
End Function

1 个答案:

答案 0 :(得分:1)

我认为这是一个错字,应该是:

If BT(0) = &H81 Then

If mybyte(0) = &H81 Then

您的代码似乎是将双字节unicode字符串转换为字符串的单字节表示形式,这将导致任何具有代码点>的字符的垃圾。 255.

如果可以,你的代码等同于内置的:

BT() = StrConv(strInput, vbFromUnicode)