1. 程式人生 > >vb.net 教程 1-6 資料型別:數值資料轉換2

vb.net 教程 1-6 資料型別:數值資料轉換2

不同於上一節的一般數值到字串的轉換

本節談談進位制間的轉換,主要涉及十進位制轉到二進位制、八進位制和十六進位制以及二進位制、八進位制和十六進位制轉到十進位制。

之前在vb6中對進位制間的轉換是比較麻煩的事情,但是vb.net就簡單多了,只需要使用到Convert 類,將一個基本資料型別轉換為另一個基本資料型別。

看以下程式碼:

    Sub main()
        Dim i As Integer
        i = 255
        Console.WriteLine("十進位制轉為二進位制:" & Convert.ToString(i, 2))
        Console.WriteLine("十進位制轉為八進位制:" & Convert.ToString(i, 8))
        Console.WriteLine("十進位制轉為十六進位制:" & Convert.ToString(i, 16))

        Dim x As String
        x = "11111111"
        Console.WriteLine("二進位制轉為十進位制:" & Convert.ToInt32(x, 2))
        x = "377"
        Console.WriteLine("二進位制轉為十進位制:" & Convert.ToInt32(x, 8))
        x = "ff"
        Console.WriteLine("十六進位制轉為十進位制:" & Convert.ToInt32(x, 16))

        Console.ReadKey()
    End Sub

執行結果:


使用到的方法:

ToString(value As Integer, toBase As Integer):

輸出字串,value表示對應的十進位制數值,toBase只能是2、8、10或者16,表示進位制。

ToInt32 (value As String, fromBase As Integer):

輸出Int32整數,value字串表示一個二進位制、八進位制和、十進位制或者十六進位制的數,fromBase只能是2、8、10或者16,表示進位制。

如果使用了不能轉換的資料,那麼執行時會發生錯誤。將字串設為"qff"再按照十六進位制轉為十進位制,由於q不是十六進位制的有效數字,所以發生錯誤:

另外補充2點:

1、format()方法也可以將十進位制轉為十六進位制字串

    Sub main()
        Dim i As Integer
        i = 255
        Console.WriteLine("十進位制轉為十六進位制:" & Format(i, "x"))

        Console.ReadKey()
    End Sub

但是遺憾的是,不能將十六進位制字串轉為十進位制整型數值。

2、整型數值也可以直接定義為十六進位制形式,常常用於常量的定義:

Private Const FILE_SHARE_READ As Integer = &H1

如下程式碼:

        Dim k As Integer = &H23
        Console.WriteLine("k=" & k)

如果定義了一個整型的十六進位制數值,那麼可以使用format轉為十進位制的整型數值:

        Console.WriteLine("十進位制轉為十六進位制:" & Format(k, "D"))

完整的程式碼及輸出結果:

   Sub main()
        Dim k As Integer = &H23
        Console.WriteLine("k=" & k)

        Console.WriteLine("十進位制轉為十六進位制:" & Format(k, "D"))

        Console.ReadKey()
    End Sub