
这要了解字符的ASCII码。A的ASCII码为65,B的ASCII码为66…
1的ASCII码为49,2的ASCII码为50…
函数chr()的作用是返回其参数所表示的字符,参数是这个字符的ASCII码。
print chr(48+i)是打印ASCII码为(48+i)所表示的字符,而Print i是打印i的值,当然不一样了。
为了加深理解,你可以运行一下下面的程序看看d出的TXT文本:
Private Sub Form_Load()
Open "c:\ASCII码与字符txt" For Output As #1
Print #1, "ASCII码", "字符"
For i = 33 To 126
Print #1, i,
Print #1, Chr(i)
Next i
Close #1
Shell "notepadexe c:\ASCII码与字符txt", 1
Kill "c:\ASCII码与字符txt"
End Sub
解决方法如下:
如果还想从 SystemString 类中找到方法进行字符串和字节数组之间的转换,恐怕会失望了。为了进行这样的转换,不得不借助另一个类:SystemTextEncoding。该类提供了 bye[] GetBytes(string) 方法将字符串转换成字节数组,还提供了 string GetString(byte[]) 方法将字节数组转换成字符串。
SystemTextEncoding 类似乎没有可用的构造函数,但可以找到几个默认的 Encoding,即 EncodingDefault(获取系统的当前 ANSI 代码页的编码)、EncodingASCII(获取 7 位 ASCII 字符集的编码)、EncodingUnicode(获取采用 Little-Endian 字节顺序的 Unicode 格式的编码)、EncodingUTF7(获取 UTF-7 格式的编码)、EncodingUTF8(获取 UTF-8 格式的编码) 等。这里主要说说 EncodingDefault 和 EncodingUnicode 用于转换的区别。
在字符串转换到字节数组的过程中,EncodingDefault 会将每个单字节字符,如半角英文,转换成 1 个字节,而把每个双字节字符,如汉字,转换成 2 个字节。而 EncodingUnicode 则会将它们都转换成两个字节。可以通过下列简单的了解一下转换的方法,以及使用 EncodingDefault 和 EncodeingUnicode 的区别:
private void TestStringBytes() {
string s = "C#语言";
byte[] b1 = SystemTextEncodingDefaultGetBytes(s);
byte[] b2 = SystemTextEncodingUnicodeGetBytes(s);
string t1 = "", t2 = "";
foreach (byte b in b1) {
t1 += bToString("") + " ";
}
foreach (byte b in b2) {
t2 += bToString("") + " ";
}
thistextBox1Text = "";
thistextBox1AppendText("b1Length = " + b1Length + "\n");
thistextBox1AppendText(t1 + "\n");
thistextBox1AppendText("b2Length = " + b2Length + "\n");
thistextBox1AppendText(t2 + "\n");
}
VBA提供了15种标准数据类型,具体见下表:
数据类型的转换
1 各种进制转换函数
VB中涉及到的数据进制之间的转换函数主要有如下几个:
Hex 函数: 返回代表十六进制数值的 String;
Oct 函数: 返回代表一数值的八进制值的Variant (String);
Cint函数: 强制将一个表达式转换成-32,768 至 32,767的整型;
CLng函数: 强制将一个表达式转换成-2,147,483,648 至 2,147,483,647的长整型;
Cdec函数: 强制将一个表达式转换成Decimal 数据类型;
CDbl函数: 强制将一个表达式转换成Double 数据类型;
例子:
(1) A=hex(5) 返回5;
(2) B=hex(10) 返回A
(3) C=hex(23) 返回17
(4) D=oct(5) 返回5
(5) E=oct(10) 返回12
(6) F=oct(23) 返回27
(7) G=Cint(&H17) 返回23
(8) H=Cint(&O12) 返回10
值得一提的是Hex函数和Oct函数返回的都是字符串,如果是想将十六进制或是八进制的字符串变量转换成十进制,可以按如下方法进行:
C=”17” 17为十六进制数值的String
C=”&H” & C
Ic=Cint(C) 返回23
2 字符串和数字转换函数
Str()和Val()用于字符串和数字的相互转换;
Chr()和Asc()用于字符串和AscII码的相互转换;
Chrw()和Ascw()用于Unicode码和中文的相互转换;
Format()函数用途十分广泛的一个函数,功能十分强大
例子:
(1) MyString = Str(-45965) ' 返回 "-45965"。
MyString = Str(459001) ' 返回 " 459001"。
(2) MyValue = Val(" 2 45 7") ' 返回 2457。
MyValue = Val("24 and 57") ' 返回 24。
(3) MyChar = Chr(97) ' 返回 a。
MyChar = Chr(37) ' 返回 %。
(4) MyNumber = Asc("Apple") ' 返回 65。
MyNumber = Asc("a") ' 返回 97。
Chr 函数:返回与指定的 ANSI 字符代码相对应的字符。
Chr(charcode):charcode 参数是可以标识字符的数字。
说明:从 0 到 31 的数字表示标准的不可打印的 ASCII 代码。例如,Chr(10)
返回换行符。
注意 ChrB 函数与包含在字符串中的字节数据一起使用。ChrB 不是返回一个或两个字节的字符,而总是返回单个字节的字符。ChrW 是为使用 Unicode 字符的 32 位平台提供的。它的参数是一个 Unicode (宽字符)的字符代码,因此可以避免将
ANSI 转化为 Unicode 字符。
扩展资料
第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;
第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
——chr函数
ACCESS中好像不支持chrw(),但,chr()及asc()函数可以达到你的要求。
比如,asc("指") 返回 -10568;
而,chr(-10568) 返回 "指"。
你可以在“立即窗口”内输入: asc("指") 回车后就会出现相应的数值,进行查看。你想看什么字就这么查看,包括软键盘上的稀奇古怪的字,都有相应的代码可以查看。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)