注册 登录
编程论坛 VB6论坛

VB6中文字符如何转为数组

spyshadow 发布于 2018-04-10 19:14, 3094 次点击
比如:
str="中国"

结果输出的数组为:
dim res(3) as byte
res(0) = &H4E
res(1) = &H2D
res(2) = &H56
res(3) = &HFD

调试的时候用res(0),可以获取到4e
最终要发送res这个数组,那边只能接收数组,这该怎么写,谢谢大家了。帮帮忙。
7 回复
#2
风吹过b2018-04-11 08:41
数组,可以使用循环一个元素一个元素的发送。
如果元素中间没有 &H0 ,那可以试着转化为字符串进行发送。

去找一下 StrConv 函数的使用说明,看看符不符合你的要求。

中国二个字,我转换成 byte 得到的结果是:
D6
D0
B9
FA

不知对不对。

#3
spyshadow2018-04-11 20:12
回复 2楼 风吹过b
感谢回答,这个转出来的不是UNICODE码,对方就出现乱码,只能接收UNICODE码,还有别的办法吗。
#4
风吹过b2018-04-12 09:07
那就 直接等吧!

程序代码:
Dim str As String
Dim p() As Byte      '只有变长BYTE数组才能直接等于字符串
Dim i As Long

str = "中国"
p = str

For i = 0 To UBound(p)
Debug.Print Hex(p(i))
Next i


得到的结果:
2D
4E
FD
56

你现在需要处理的就是高位在前,还是高位在后。
查了一下,WIN平台是低位在前。现在关键在你接收平台是高位在前,还是低位在前。
如果是高位在前,你需一个 转换程序,交换每个元素的位置。
就是 0 和 1 换,2 和3 换,4  和 5换。

#5
wds12018-04-12 21:14
方法1
a = "中国"
max1 = Len(a)
ReDim txt1(max1)
For i = 1 To max1
txt1(i) = AscW(Mid(a, i, 1)) 'AscW 返回输入字符的 Unicode 码。
Debug.Print Hex(txt1(i));
next i

方法2
Private Sub Command1_Click()
Dim s As String, a() As Byte
s = "中国"
a = s
text1 = ""
For i = 0 To UBound(a) Step 2
text1 = text1 & Format(Hex(a(i + 1)), "00") & Format(Hex(a(i)), "00") & " "
Next
Debug.Print text1
End Sub

结果 4E2D 56FD


[此贴子已经被作者于2018-4-12 21:26编辑过]

#6
spyshadow2018-04-15 00:32
这些都是字符串,如何附加给一个数组呢
#7
Artless2018-04-15 03:00
以下是引用spyshadow在2018-4-10 19:14:36的发言:

比如:
str="中国"

结果输出的数组为:
dim res(3) as byte
res(0) = &H4E
res(1) = &H2D
res(2) = &H56
res(3) = &HFD

调试的时候用res(0),可以获取到4e
最终要发送res这个数组,那边只能接收数组,这该怎么写,谢谢大家了。帮帮忙。

协议是什么?
#8
wds12018-04-16 10:42
前面已经有例子了,a就是数组,VB内部就是unicode
Private Sub Command1_Click()
  Dim txt1 As String
  Dim a() As Byte
  Dim i As Long
  txt1 = "中国"
  a = txt1
  For i = 0 To UBound(a): Debug.Print a(i);: Next
End Sub
数组内容: 45  78  253  86
1