现在有一个字符串txtTerm="*A噢#",在内存的存储数据为十六进制 2A 41 E0 DE 23,
现在要把这个字符串转换为字符数组,也就是
b(0)="&H2A"  b(1)="&H41"   b(2)="&HE0"  b(3)="&HDE"  b(4)="&H23" ,怎么在VB6.0里实现转换

解决方案 »

  1.   


    Private Sub Command1_Click()
      Dim Arr() As Byte
      Arr = StringToByteArray("*A噢#")
      Dim i As Long
      For i = 0 To UBound(Arr)
         MsgBox "&H" & Hex(Arr(i))
      Next
    End Sub
    '******************************
      ' StringToByteArray(Text)
      ' 将字符串转换为 字节数组
    '*******************************Public Function StringToByteArray(ByVal Text As String) As Byte()Dim sAns() As Byte
    sAns = StrConv(Text, vbFromUnicode)
    StringToByteArray = sAnsEnd Function
      

  2.   

    StrConv 函数
          返回按指定类型转换的 Variant (String)。语法StrConv(string, conversion, LCID)StrConv 函数的语法有下面的命名参数:部分 说明 
    string 必要参数。要转换的字符串表达式。 
    conversion 必要参数。Integer。其值的和决定转换的类型。 
    LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。) 
    设置值conversion 参数的设置值为:常数 值 说明 
    vbUpperCase 1 将字符串文字转成大写。 
    vbLowerCase 2 将字符串文字转成小写。 
    vbProperCase 3 将字符串中每个字的开头字母转成大写。 
    vbWide* 4* 将字符串中单字节字符转成双字节字符。 
    vbNarrow* 8* 将字符串中双字节字符转成单字节字符。 
    vbKatakana** 16** 将字符串中平假名字符转成片假名字符。 vbHiragana** 32** 将字符串中片假名字符转成平假名字符。 
    vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。 
    vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。 *应用到远东国别。**仅应用到日本。注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。说明在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。
      

  3.   

    LZ:似乎应该是把这个字符串转换为字节数组.
    Option Explicit
        Dim sTemp As String
        Dim yTemp() As BytePrivate Sub Command1_Click()
        Dim i As Integer
        sTemp = "*A噢#"
        yTemp = StrConv(sTemp, vbFromUnicode)
        Print UBound(yTemp)
        For i = 0 To UBound(yTemp)
           Print yTemp(i)
        Next
    End Sub
      

  4.   

    如果字符串从左到右的十六进制依次为2A 00 45 67 89
    怎么MSGBOX ARR(1)显示65怎么回事
    2A FF 11 11 11时也显示显示65怎么回事
    我的意思是不管怎么样,都是要提取字符串第二个字节的十进制数字,如果第二字节是FF,则显示255
    你的程序有时候可以正确显示,有时候不可以,不知道问题在哪里
      

  5.   

    LZ:
    你给出的字符串是"*A噢#"
    它的第2字节必然值是65
    除非字串表达式为
    sTemp = "*" & Chr(&H0) & Chr(&H45) & Chr(&H67) & Chr(&H89) 
    用下列代码可获取yTemp(1) = 0
    Option Explicit
        Dim sTemp As String
        Dim yTemp() As BytePrivate Sub Command1_Click()
        Dim i As Integer
        yTemp = StrConv(sTemp, vbFromUnicode)
        Print UBound(yTemp)
        For i = 0 To UBound(yTemp)
           Print yTemp(i)
        Next
    End SubPrivate Sub Form_Load()
        sTemp = "*" & Chr(&H0) & Chr(&H45) & Chr(&H67) & Chr(&H89) 'A噢#"
        Text1 = sTemp
    End Sub或除非字串表达式为
        sTemp = "*" & Chr(&HFF) & Chr(&H11) & Chr(&H11) & Chr(&H11) 'A噢#"
    用下列代码可获取yTemp(1) = 255
    Option Explicit
        Dim sTemp As String
        Dim yTemp() As BytePrivate Sub Command1_Click()
        Dim i As Integer
        yTemp = StrConv(sTemp, vbFromUnicode)
        Print UBound(yTemp)
        For i = 0 To UBound(yTemp)
           Print yTemp(i)
        Next
    End SubPrivate Sub Form_Load()
        sTemp = "*" & Chr(&HFF) & Chr(&H11) & Chr(&H11) & Chr(&H11) 'A噢#"
        Text1 = sTemp
    End Sub
      

  6.   

    dim b() as byte
    b = strconv( "fdsa", vbfromunicode )