技术开发 频道

VB中各种数据类型转换函数小结

【IT168 技术文档】在VB中,提供了很多数据类型转换的函数,特别是各种进制数据的转换以及字符串和数字的转换函数,本文将对这些函数做一个简单的小结.

    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 数据类型; 

    以上这些函数是最基本的几个数据进制之间的转换函数,其中以前三个函数最常用,也最有用.从上面几个函数我们可以看到,VB中没有为我们提供专门的函数供我们将表达式或是数据转换成十进制和二进制,不过十进制的转换我们可以通过Cint函数轻松完成,而二进制的实现我们可以通过二进制和八进制,十六进制的关系轻松转换. 

    下面几个例子为Hex函数和Oct函数以及Cint函数的实例: 

    (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. 字符串和数字转换函数 

    VB中的字符串函数比较多,也比较方便,就不一一介绍了.本文主要对字符串相关的转换函数做一些小结.字符串转换的函数主要有: 

    Str()和Val()用于字符串和数字的相互转换; 

    Chr()和Asc()用于字符串和AscII码的相互转换; 

    Chrw()和Ascw()用于Unicode码和中文的相互转换; 

    Format()函数用途十分广泛的一个函数,功能十分强大. 

    在这些函数中前两对和Format()函数是我们经常用到的,这里只给出前两对的几个简单例子: 

    (1) MyString = Str(-459.65) ' 返回 "-459.65"。 
    MyString = Str(459.001) ' 返回 " 459.001"。 

    (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。 

    Format函数功能十分强大,大家可以察看msdn相关说明.本文重点想说一下第三对函数,这是经常被大家忽视的一对函数.在我开发手机短信时,最开始时就是用text模式开发的,后来由于发中文改成pdu模式,pdu模式有三种形式可用:7-bits,8-bits,ucs2.前两种都是表复杂的,涉及到编码函数的设计,这里就不多说了,我用的是ucs2编码,发现只要使用第三对函数就能完成pdu串的编码和解码.这对函数的使用和第二对完全相同,下面举几个例子说明(以下代码从vb的立即窗口里得到): 

    ?ascw("中") 
    20013 
    ?ascw("果") 
    26524 
    ?ascw("e") 
    101 
    ?chrw(101) 
    e 
    ?chrw(26589) 
    柝 

    在chrw()和ascw()函数中,对于ASCII仍然和chr()与asc()相同对待.以上只是我对这些函数使用时的一点小结,期望能起到抛砖引玉的作用.

0
相关文章