在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()相同對待.以上只是我對這些函數使用時的一點小結,期望能起到拋磚引玉的作用.