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
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
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
//' 字符串转换成字节数组
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
这个我一开始可是想到了,只不过是想告诉楼主大致意思,没写那么详细。 :)
不过我们确实应该严谨一些。
CopyMemery buf(1), Byval s, 255ByVal会自动将UniCode的String转为ANSI格式
得到的是ANSI字串,想在vb中正常显示,记得要用strconv转化一下
得到的是ANSI字串,想在vb中正常显示,记得要用strconv转化一下是unicode串吧