vb字符串在内存中的分布?
據說vb6中,字 符串以以UNICODE方式存儲,所以
Private Type UDTlngM1 As LonglngM2 As LongstrM3 As String * 18strM4 As String * 8lngM5 As Long End TypePrivate Sub Command4_Click()Dim tmp As UDTWith tmp.lngM1 = 1.lngM2 = 2' .strM3 = "一二三四五六七八九十一二三四五六七八".strM3 = "一二三四五六七八九"' .strM3 = "ABCD".strM4 = "測試ABC".lngM5 = 5End WithDim bytBuf() As ByteReDim bytBuf(Len(tmp) - 1)CopyMemory bytBuf(0), tmp, Len(tmp)Winsock1.SendData bytBufEnd Sub
?
vc6中定義相對應的結構體:
typedef struct{long lM1;long lM2;char szM3[18];char szM4[8];long lM5; }UDT;//。。。。。。(省略部分代碼)char recvBuf[128]; UDT t;while(true) { memset(&t,0,sizeof(t));memset(recvBuf,0,sizeof(recvBuf));//接收數據 int recvlen=recvfrom(svr,recvBuf,128,0,(sockaddr*)&addrClient,&len); ::CopyMemory(&t,recvBuf,128);} //。。。。。。。
?
通過socket傳到vc里進行調試如下:
?
?
?
?
二、當 vb中調整代碼為(.strM3 )
?
顯然,不是UNICODE的表示方法
?
另人郁悶??????
----------------------------------------------------------
添加 tmp.strM3 = StrConv(tmp.strM3, vbUnicode):
總結
以上是生活随笔為你收集整理的vb字符串在内存中的分布?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在VB 中调用动态连接库
- 下一篇: C++函数调用方式(_stdcall,