dim s as string
dim buf(255) as byte如何实现s和buf的转换

解决方案 »

  1.   

    Option ExplicitPrivate Sub Command1_Click()
    Dim s As String, i As Long
    Dim buf(255) As Byte' 字符数组转换成字符串
    buf(0) = 65
    buf(1) = 66
    buf(2) = 67
    s = StrConv(buf(), vbUnicode)
    Debug.Print s' 字符串转换成字节数组
    s = "webuilder"
    For i = 1 To Len(s)
        buf(i - 1) = Asc(Mid(s, i, 1))
    Next i
    For i = 0 To Len(s) - 1
        Debug.Print Chr(buf(i));
    Next i
    End Sub
      

  2.   

    to goodname008(卢培培,LPP Software) :
    //' 字符串转换成字节数组
    s = "webuilder"
    For i = 1 To Len(s)
        buf(i - 1) = Asc(Mid(s, i, 1))
    Next i
    For i = 0 To Len(s) - 1
        Debug.Print Chr(buf(i));
    Next i
    End Sub处理中文字串会出现内存溢出
    修改一下:
    Option Explicit
    Private Sub Command1_Click()
        Dim s As String, i As Long
        Dim buf(255) As Byte
        Dim mbuf() As Byte
        
        ' 字符串转换成字节数组
        s = "你好webuilder"
        mbuf = StrConv(s, vbFromUnicode)
        For i = 0 To UBound(mbuf)
            buf(i) = mbuf(i)
        Next
    End Sub
      

  3.   

    同意rainstormmaster(rainstormmaster)。
    这个我一开始可是想到了,只不过是想告诉楼主大致意思,没写那么详细。  :)
    不过我们确实应该严谨一些。
      

  4.   

    觉得直接用赋值比较好,不要用strConv。
      

  5.   

    API申明自己加:
    CopyMemery buf(1), Byval s, 255ByVal会自动将UniCode的String转为ANSI格式
      

  6.   

    用CopyMemery buf(1), Byval s, 255
    得到的是ANSI字串,想在vb中正常显示,记得要用strconv转化一下
      

  7.   

    用CopyMemery buf(1), Byval s, 255
    得到的是ANSI字串,想在vb中正常显示,记得要用strconv转化一下是unicode串吧
      

  8.   

    刚做了实验, 就是unicode的