急!!菜鸟问题(关于向C写的动态库中传入和传出BYTE ARRAY的问题。。。)

rainman2001 2004-07-18 05:00:52
本人写了一个用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是新手请指教。


...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainman2001 2004-07-18
  • 打赏
  • 举报
回复
我同事也是
49
196
227
我想可能是系统的问题吧。
online 2004-07-18
  • 打赏
  • 举报
回复
我这里也是
49
196
227

winxp+vb6+sp6
rainman2001 2004-07-18
  • 打赏
  • 举报
回复
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。这是为什么?
TechnoFantasy 2004-07-18
  • 打赏
  • 举报
回复
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

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧