| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 400 人关注过本帖
标题:VB6中文字符如何转为数组
只看楼主 加入收藏
spyshadow
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-4-10
  问题点数:0  回复次数:7   
VB6中文字符如何转为数组
比如:
str="中国"

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

调试的时候用res(0),可以获取到4e
最终要发送res这个数组,那边只能接收数组,这该怎么写,谢谢大家了。帮帮忙。
2018-04-10 19:14
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:220
帖 子:4264
专家分:26041
注 册:2008-10-15
  得分:0 
数组,可以使用循环一个元素一个元素的发送。
如果元素中间没有 &H0 ,那可以试着转化为字符串进行发送。

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

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

不知对不对。


授人于鱼,不如授人于渔
早已停用QQ了
2018-04-11 08:41
spyshadow
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-4-10
  得分:0 
回复 2楼 风吹过b
感谢回答,这个转出来的不是UNICODE码,对方就出现乱码,只能接收UNICODE码,还有别的办法吗。
2018-04-11 20:12
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:220
帖 子:4264
专家分:26041
注 册:2008-10-15
  得分:0 
那就 直接等吧!

程序代码:
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换。


授人于鱼,不如授人于渔
早已停用QQ了
2018-04-12 09:07
wds1
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:23
帖 子:250
专家分:1381
注 册:2016-3-10
  得分:0 
方法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编辑过]

2018-04-12 21:14
spyshadow
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-4-10
  得分:0 
这些都是字符串,如何附加给一个数组呢
2018-04-15 00:32
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:102
帖 子:4209
专家分:28884
注 册:2009-4-8
  得分:0 
以下是引用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这个数组,那边只能接收数组,这该怎么写,谢谢大家了。帮帮忙。

协议是什么?

无知
2018-04-15 03:00
wds1
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:23
帖 子:250
专家分:1381
注 册:2016-3-10
  得分:0 
前面已经有例子了,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
2018-04-16 10:42







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039410 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved