本人写了一个用C写了一个动态函数借口如下:
func(BYTE *pSrc,short srcLen,BYTE* pDest,short *pDestLen);
在VB中调用如下:
Private Declare Sub func Lib "xxx.dll" (ByRef lpSrc As bye, ByVal nSrcLen As Integer, lpDest As Long, ByRef pDestLen As Integer)Private Sub Command1_Click()    Dim str As String
    dim b() as Byte
    dim lpDest as long
    dim pDestLen as Integer
    
    str = "1你"
    
    //请问怎么将str转成正确的byte array传入c中接收
    //用b = str,发现b(0) = 49,b(1) = 0 ,b(2) = 96,b(3) = 79
    //用b = strconv(str,vbFormUnicode),发现b(0) = 49,b(1) = 63  而不是像论坛中的帖子说得有三个字节。难道是配置问题吗。  
    //所以传入C中的组成字符串就不对了。在c中"1你"的byte array为b(0) = 49,b(1) = 196 ,b(2) = 227
    
    func b(0), 4, lpDest, pDestLen
    
    //还有如果有中文传出的时候不知道应该怎么得到
    
End Sub本人对VB是新手请指教。

解决方案 »

  1.   

    Private Sub Command4_Click()
        Dim s As String
        Dim b() As Byte
        
        s = "1你"
        b = StrConv(s, vbFromUnicode)
        For i = LBound(b) To UBound(b)
            Debug.Print b(i)
        Next i
    End Sub上面的代码运行输出的结果是: 49 
     196 
     227
      

  2.   

    Private Sub Command4_Click()
        Dim s As String
        Dim b() As Byte
        
        s = "1你"
        b = StrConv(s, vbFromUnicode)
        For i = LBound(b) To UBound(b)
            Debug.Print b(i)
        Next i
    End Sub上面的代码运行输出的结果是: 49 
     63在我这儿和你答案不一样。我的是vb6.0。这是为什么?
      

  3.   

    我这里也是
     49 
     196 
     227winxp+vb6+sp6