请对acsii码有研究的高手们进来一下帮帮忙!
本人刚接触VB不久,所以很多东东还不明白!如今我学习编一个程序需要acsii码,别人帮我找到一个用VB编的acsii码对照表,但我还是不太懂用(汗,目前还是菜鸟一只是这种程度的了!),所以来这里求大家指点迷津!
譬如:(1)函数值>127时,对应的字符该怎样求!(2)当是多字符的时候,对应的函数值怎求 (3)对于特殊字符的对应值又怎求
暂时是这么多,如果再遇到什么问题我再会向大家求教,在这里先感谢大家.小弟是第一次发贴,有什么不对的地方请指出来.再次感谢!!!!!!!!!!
问题点数:15、回复次数:10Top
1 楼KiteGirl(小仙妹)回复于 2004-05-01 21:26:23 得分 15
1、VB里采用UniCode码,大于127的代码将无法显示(而且,大于127的代码往往被认为是汉字或者扩展字符集)。UniCode码是16位的,在VB里,每个字符都占用两个字节。即使半角英文、符号也如此。
2、求多个字符的UniCode码。
Dim tBytes() As Bytes
tString="KiteGirl是个好孩子"
tBytes()=String
以上代码获得一个Byte数组,体现字符串在内存中的UniCode格式。
或者:
Ascii=Asc(Mid(tString,i,1)) '求字符串第i个字符的Ansi或者GBK编码(简体系统)。
Ascii=AscW(Mid(tString,i,1)) '求字符串第i个字符的UniCode编码。
Ascii=AscB(MidB(tString,i,1)) '求字符串第i个字节的Ascii码。
3、特殊字符以KeyPress事件来求。
Top
2 楼luoxiaoxiang(翔翔)回复于 2004-05-02 17:18:01 得分 0
敲哪个键,窗体就显示该键的Ascii码。
Option Explicit
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim a As String
a = KeyCode
Print a
End Sub
Top
3 楼holyassassin(迷途小羊羔)回复于 2004-05-05 13:10:04 得分 0
哪请问Windows自带的计算器对换算有帮助吗?
能否教我设计一个查Acsii码的对照表吗?Top
4 楼hhyttppd(123456)回复于 2004-05-05 13:26:20 得分 0
asc(char)求字符的ASCII 码,chr(ascii)求ascii码对应的字符。Top
5 楼KiteGirl(小仙妹)回复于 2004-05-05 20:31:37 得分 0
给你一个显示Ascii码表的例子:
Private Sub Form_Load()
Dim tOutString As String
Dim tBytes() As Byte
Dim tIndex As Long
ReDim tBytes(0 To 511)
For tIndex = 0 To 255
'以空格填充不显示区域
tBytes(tIndex * 2) = 32
Next
For tIndex = 32 To 127
'充值:在Windows下,只能正常显示32-127范围的Ascii码。
tBytes(tIndex * 2) = tIndex
Next
tOutString = tBytes()
Text1.Text = tOutString
End SubTop
6 楼holyassassin(迷途小羊羔)回复于 2004-05-06 15:48:01 得分 0
那如果是特殊或双字符的呢?请给个例子Top
7 楼holyassassin(迷途小羊羔)回复于 2004-05-06 16:03:13 得分 0
小仙妹姐姐你给的这段代码好像有误Dim tBytes() As Bytes
tString="KiteGirl是个好孩子"
tBytes()=String
你自己试试看可能是我自己弄错了!Top
8 楼KiteGirl(小仙妹)回复于 2004-05-06 16:42:28 得分 0
的确是错了!
tString="KiteGirl是个好孩子"
tBytes()=String
其中tBytes()=String这句错了。应该是:
tBytes()=tString
属于笔误!不好意思!
Top
9 楼KiteGirl(小仙妹)回复于 2004-05-06 17:02:03 得分 0
在VB里,Byte数组和String可以互相赋值,利用这个特性处理字符串非常方便。
如果是处理大量文本,以下用法应该熟悉。
字符串与Byte数组互相赋值:
tBytes()=tString
tString=tBytes()
需要注意的是,在VB内部字符串是UniCode表示的,而Asc函数返回的是Ascii和GBK编码(也就是默认代码页的编码)。因此,Asc函数返回的编码值与上面的Byte数组返回的值可能是不同的。
从Ascii/GBK文本获得Unicode数组:
tBytes()=StrConv(tString,vbUnicode)
从Unicode文本获得Ascii/GBK数组:
tBytes()=StrConv(tString,vbFormUnicode)
从Ascii/GBK数组获得Unicode文本:
tString=StrConv(tBytes(),vbUnicode)
从Unicode数组获得Ascii/GBK文本:
tString=StrConv(tBytes(),vbFormUnicode)
快速读取文本文件:
'将文本文件整个读到Byte数组:
Dim tBytes() As Byte
tFN=FreeFile
Open pFileName For Binary As #tFN
tFileSize=LOF(#tFN)
ReDim tBytes(tFileSize-1)
Get #tFN,1,tBytes()
Close #tFN
tString=StrConv(tBytes(),vbUnicode) '从文件获得数组转换为带换行的多行文本字符串。
反之,如果将字符串文本写为二进制文件,则要:
Dim tBytes() As Byte
tBytes()=StrConv(tString,vbFormUnicode)
tFN=FreeFile
Open pFileName For Output As #tFN '清除文件内容
Close #tFN
Open pFileName For Binary As #tFN
Put #tFN,1,tBytes()
Close #tFN
另外,还可以用API函数CopyMemory将Byte数组转换为Integer数组,在利用查表法进行内码转换、简繁转换时,该操作尤为重要。因为,在VB当中,每个“字”的编码都是16位UniCode,用Integer数组表示最为直观。但Integer数组不能直接与String赋值,因此需要一个与Byte数组转换的过程。
另外,你可以参考我在下面这个帖子里的回复:
http://expert.csdn.net/Expert/TopicView1.asp?id=2939892
在这个帖子里,我贴有一个GBK转Big5的代码,其中提供了一些比较实用的函数。
Top
10 楼holyassassin(迷途小羊羔)回复于 2004-05-14 18:13:03 得分 0
谢谢!我懂了!麻烦小仙妹姐姐那么耐心教偶!!感激感激!!Top




