| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1443 人关注过本帖
标题:请教一下有关 StrConv 函数 的用法?
只看楼主 加入收藏
chenjl335402
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2015-3-9
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:2 
请教一下有关 StrConv 函数 的用法?
如下程序是将 区位码转化为汉字 的代码:
 Private Sub Command1_Click()
    Dim barr(1) As Byte
    Dim sMe As String
    barr(0) = CInt(Mid(Text3.Text, 1, 2)) + 160    '转换为国标码
    barr(1) = CInt(Mid(Text3.Text, 3, 4)) + 160
    sMe = StrConv(barr, vbUnicode)
    Text4.Text = sMe
 End Sub
例如:在Text3中输入区位码: 2635 ,在Text4中即可显示汉字:好

请问各位大侠:sMe = StrConv(barr, vbUnicode)是具体怎样将区位码化为汉字的?
              函数StrConv中的字节数组barr如果要写成具体的string,该怎么写呢?
搜索更多相关主题的帖子: 国标码 汉字 
2015-06-12 22:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:20 
首先,你要了解 Unicode 的内存表示方式
Unicode 在内存中,每个字符(不管是字母还是数字,还是汉字),都是占二个字节的。
如果是 字母 和 数字、符号等半角字符, 第一个字节为0,第二个字节为 ASCII 码。
如果是汉字,第一个字节为 》128,以便与 ASCII 区分开来。

了解其他。
国标码:就是 汉字在内存里的表示方式:规定从是使用 两个字节,每字节使用后 7位表示。
机内码:为了区别ASCII码,机内码= 每个字节最高位 写1,然后后7位使用国标码。
公式就是 机内码=国标码 + &H8080
区位码就是 按国标码,然后分区编码。具体编码规律,百度结果为:
汉字机内码、国标码和区位码三者之间的关系为:区位码(十进制)的两个字节分别转换为十六进制后加20H得到对应的国标码;机内码是汉字交换码(国标码)两个字节的最高位分别加1,即汉字交换码(国标码)的两个字节分别加80H得到对应的机内码;区位码(十进制)的两个字节分别转换为十六进制后加A0H得到对应的机内码。

VB内部字符串均使用 Unicode 来表示,但 API,有很多API函数使用的是 C标准的字符串,在这种情况下,VB就提供了 StrConv 来对这二类进行转换。
对于C标准的字符串,在VB里并不直接支持,而是间接支持,使用 BYTE 数组来调用。所以有些需要传递 字符串 的函数,也可以传递 BYTE 数组 进去。

你前面的代码就是,按照 区位码转机内码的方式,转化为 汉字的机内码后(BYTE数组),然后再使用 StrConv 转化为 Unicode 类型,从而显示出汉字来。

StrConv 函数的具体处理过程,就涉及到C语言了。
目前我们学VB的,一般就只了解到 这个函数就是负责 在 Unicode字符串  和 C标准字符串之间的转换,能灵活使用。

授人于鱼,不如授人于渔
早已停用QQ了
2015-06-13 12:03
chenjl335402
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2015-3-9
收藏
得分:0 
谢谢,谢谢楼上的回复,解答了我不少问题!
2015-06-14 22:24
快速回复:请教一下有关 StrConv 函数 的用法?
数据加载中...
 
   



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

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