| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2751 人关注过本帖
标题:VB6中文字符如何转为数组
只看楼主 加入收藏
spyshadow
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-4-10
结帖率:0
收藏
 问题点数: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这个数组,那边只能接收数组,这该怎么写,谢谢大家了。帮帮忙。
搜索更多相关主题的帖子: VB6 文字 数组 res 调试 
2018-04-10 19:14
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4937
专家分:30047
注 册:2008-10-15
收藏
得分:0 
数组,可以使用循环一个元素一个元素的发送。
如果元素中间没有 &H0 ,那可以试着转化为字符串进行发送。

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

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

不知对不对。


授人于鱼,不如授人于渔
早已停用QQ了
2018-04-11 08:41
spyshadow
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-4-10
收藏
得分:0 
回复 2楼 风吹过b
感谢回答,这个转出来的不是UNICODE码,对方就出现乱码,只能接收UNICODE码,还有别的办法吗。
2018-04-11 20:12
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4937
专家分:30047
注 册: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: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册: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
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-4-10
收藏
得分:0 
这些都是字符串,如何附加给一个数组呢
2018-04-15 00:32
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册: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: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册: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
快速回复:VB6中文字符如何转为数组
数据加载中...
 
   



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

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