我想在0-255的数值范围内,将类似"D" & Chr(7) & Chr(181) & Chr(240) & Chr(45)的字符串存入字节数组,使得数组内数据为a(0)=Asc("D"),a(1)=7,a(2)=181,a(3)=240,a(4)=45,该如何做?
我用了如下方法
Dim a() as byte
s="D" & Chr(7) & Chr(181) & Chr(240) & Chr(45)
a = StrConv(s, vbFromUnicode)
取到的a内数据为a(0)=Asc("D"),a(1)=7,a(2)=0,a(3)=0,a(4)=45
请高手赐教

解决方案 »

  1.   

    简而言之,如果
    Dim s As String
    Dim i As Integer
    s=Chr(i)
    如何处理s,才能取出s对应的那个i的值(只处理s,不通过i,i>127,i<256),使取出的值为i的真实值而不是0或者其他
      

  2.   

    Dim arrA()
    s = "D" & Chr(7) & Chr(181) & Chr(240) & Chr(45)
    ReDim arrA(Len(s)) As Variant
    For i = 0 To Len(s) - 1
      arrA(i) = Mid(s, i + 1, 1)
    Next
    For j = LBound(arrA) To UBound(arrA)
      Debug.Print arrA(j)
    Next
      

  3.   

    Dim s As String
    Dim bDist() As Byte
    bDist = s
      

  4.   

    有一点错误
    For j = LBound(arrA) To UBound(arrA)
      Debug.Print arrA(j)
    Next改为
    For j = LBound(arrA) To UBound(arrA) - 1
      Debug.Print arrA(j)
    Next
    但如果你的模块中有"Option Base 1"则不用改.
      

  5.   

    不用数组用 collection 对象    Dim clcWord As Collection
        Set clcWord = New Collection
        clcWord.Add "D", "1"
        clcWord.Add Chr(7), "2"
        clcWord.Add Chr(181), "3"
        clcWord.Add Chr(240), "4"
        clcWord.Add Chr(45), "5"
        
        MsgBox clcWord("5")
        
        Set clcWord = Nothing这样就可以了。但是ASCII码不是都是可见的,chr(181) 就不可见,有问题你再问
      

  6.   

    Private Declare Sub CopyMemory _
    Lib "kernel32" Alias "RtlMoveMemory" ( _
        ByRef pDst As Any, _
        ByRef pSrc As Any, _
        ByVal ByteLen As Long)Dim a() As Integer
    Dim s As Strings = "D" & ChrW(7) & ChrW(181) & ChrW(240) & ChrW(45)
    ReDim a(Len(s))
    CopyMemory a(0), ByVal StrPtr(s), Len(s) * 2
      

  7.   

    那你用Asc(Chr(i))就可以取到i的值了
      

  8.   

    算了,结贴吧,用ChrW(i),才能取到正确的值