以下内容摘自网络:
我们知道在处理字符串时,VB把一个汉字当成一个字符来进行出来,结果导致按一般情况做出来的key不支持中文,所以我们要做出支持中文的VBkey,就必须正确的得到组成一个汉字的两个ASCII码,如果得到呢?这里有两种方法:
第一种:
第一步:使用Strconv()函数进行字符串转换.
该函数的作用是对输入的字符串进行编码转换,返回值是一个字符串.该函数原型如下:
StrConv(string, conversion, LCID)
string:要转换的字符串(必须)
conversion:整数类型,表示要进行何种转换(必须)
LCID:本地LocaleID,相当于语种类型(可选)
如果我们要获得组成汉字的两个ASCII码,conversion可以选择为vbFromUnicode,表示将Unicode转换成本地缺省的代码页,如果你的是中文windows,就可以通过下一步获得组成汉字的两个ASCII码了.(其他语种的windows也许不可以,欢迎测试)
第二步:提取ASCII码:
由于Strconv的返回值是一个字符串,如何得到字符串中每个字符的ASCII码了,很多人会想到用Mid$函数或MidB$函数,可惜在这里如果用这两个函数的话,你会发现你有很多字符无法得到,为什么呢?因为Mid$(),MidB$()都无法实现对大于ASCII码大于127的字符的截取,所以我们必须采用其他的方法.在VB中Byte类型的数组可以直接跟字符串数组进行相互赋值,如果将字符串赋给一个Byte类型的数组,如果该字符串中的字符是汉字(必须是转换后的),则用一个数组的两个元素来保存该字符的ASCII码,否则用一个数组元素.
比如:
dim a() as byte
a=strconv("我a",vbFromUnicode)
'则a(0)=206,a(1)=210,a(2)=97 注意:数组下标是从0开始
综合一、二步,就可以写出完整的代码:
dim AscArray() as byte
dim strSN as string
dim i as long
AscArray=strconv(strSN,vbFromUnicode)
for i=0 to Ubound(AscArray)
'处理过程
next i
第二种方法:
直接采用ASC()函数,对ASC()的返回值进行处理就可以准确的得到组成一个汉字的两个字节的ASCII码.
如:
dim HighAsc as byte
dim LowAsc as byte
dim lngAscii as long
lngAscii=ASC("我")
HighAsc=int((65536+lngAscii)/256)
LowAsc=(65536+lngAscii) mod 256
'结果 HighAsc=206,LowAsc=210
本文结束.
再加一个:如果得到含中文字符的字符串的长度
用LenB(strconv(字符串,vbFromUnicode))就可以得到该字符串的长度。
我再补充一个方法:
MsgBox Hex(Asc("中")) 'D6D0
MsgBox Mid(Hex(Asc("中")), 1, 2) 'D6
MsgBox Mid(Hex(Asc("中")), 3, 2) 'D0
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/391.html 欢迎订阅Eddy Blog。