VB.NET学习笔记:数据类型——进制转换(二进制、八进制、十进制和十六进制相互转换)

在.NET Framework中,System.Convert类中的ToString方法和ToInt32(ToInt64)方法都可以方便的实现各种进制间的相互转换。

1、Convert .ToString 方法

Convert .ToString 方法可以将整数值转换为其指定基数(必须是 2、8、10 或 16)的等效字符串表示形式。即可以将十进制整数转换成二进制、八进制、十进制(无实际意义)或十六进制数字的字符串。
Convert .ToString(value,toBase)
参数:value——整型,要转换的整数;toBase—— System .Int32 ,返回值的基数,必须是 2、8、10 或 16。
返回值:System .String ,以 toBase 为基的 value 的字符串表示形式。
如:

        Dim int As Integer = 256
        '十进制转二进制
        Dim str2 As String = Convert.ToString(int, 2)
        '十进制转八进制
        Dim str8 As String = Convert.ToString(int, 8)
        '十进制转十进制
        Dim str10 As String = Convert.ToString(int, 10)
        '十进制转十六进制
        Dim str16 As String = Convert.ToString(int, 16)
        Console.WriteLine("十进制转二进制:" & str2)
        Console.WriteLine("十进制转八进制:" & str8)
        Console.WriteLine("十进制转十进制:" & str10)
        Console.WriteLine("十进制转十六进制:" & str16)

测试结果如图:
VB.NET学习笔记:数据类型——进制转换(二进制、八进制、十进制和十六进制相互转换)_第1张图片

2、Convert .ToInt32(ToInt64) 方法

将指定基数的数字的字符串表示形式转换为等效的整数。即可以将二进制、八进制、十进制(无实际意义)或十六进制整数的字符串表示形式转换为十进制的数字(整型)。
Convert .ToUInt64(value,fromBase)
参数:value—— System .String ,包含要转换的数字的字符串;fromBase——System .Int32 ,value 中数字的基数,它必须是 2、8、10 或 16。
返回值:整型,与 value 中数字等效的 整数,如果 value 为 Nothing,则为 0(零)。
如:

        '二进制
        Dim str2 As String = "100000000"
        '八进制
        Dim str8 As String = "400"
        '十六进制
        Dim str16 As String = "100"

        '二进制转十进制
        Dim int2 As Integer = Convert.ToInt32(str2, 2)
        '八进制转十进制
        Dim int8 As Integer = Convert.ToInt32(str8, 8)
        '十六进制转十进制
        Dim int16 As Integer = Convert.ToInt32(str16, 16)

3、二进制、八进制、十进制或十六进制间任意互转(输出字符串)

先把字符串转换成十进制数字,再把数字转换成其他进制的字符串。

    Sub Main()
        '二进制
        Dim str2 As String = "100000000"
        '八进制
        Dim str8 As String = "400"
        '十六进制
        Dim str16 As String = "100"

        '二进制转十六进制
        Dim str2to16 As String = ConvertString(str2, 2, 16)
        '八进制转十六进制
        Dim str8to16 As String = ConvertString(str8, 8, 16)
        '十六进制转二进制
        Dim str16to2 As String = ConvertString(str16, 16, 2)
    End Sub
    ''' 
    ''' 进制转换
    ''' 
    ''' 二进制、八进制、十进制或十六进制整数的字符串表示形式
    ''' 与value值中的相对应的基数(2、8、10或16)
    ''' 要转换成的进制基数(2、8、10或16)
    ''' 
    Private Function ConvertString(ByVal value As String, ByVal fromBase As Int32, ByVal toBase As Int32) As String
        Dim intValue As Integer = Convert.ToInt32(value, fromBase)

        Return Convert.ToString(intValue, toBase)
    End Function

4、其他进制转换方法

Object.ToString方法或String.Format方法可以将十进制整数转换成十六进制的数字字符串表现形式,但没有提供其他进制的转换。
如:

        Dim int As Integer = 256
        Dim strS As String = int.ToString("x")
        Dim strF As String = String.Format("{0:x}", int)

5、进制基础知识

比如十进制的15,其二进制为1111,八进制为17,而16进制为F,各种进制之间是如何转换的呢?

(1)二进制、八进制、十六进制转十进制

VB.NET学习笔记:数据类型——进制转换(二进制、八进制、十进制和十六进制相互转换)_第2张图片
可见,在十进制中,每一位表示10的幂,要知道十进制位所代表的具体数字,可以将相应数字乘以10的幂,然后把结果相加。
按照同样的方法,二进制中,每一位表示2的幂,则应将数字乘以2的幂,然后把结果相加即可得到相应的十进制数。
依此类推,八进制和十六进制都可以按此方法转换为十进制。

(2)十进制转二进制、八进制、十六进制

方法:除相应进制的基数(如二进制的基数为2、八进制的基数为8、十六进制的基数为16)取余法,即每次将整数部分除以基数,余数为该位权上的数,而商继续除以基数,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
例:将十进制的(15)转换为二进制的步骤如下:

  1. 将商15除以2,商7余数为1;
  2. 将商7除以2,商3余数为1;
  3. 将商3除以2,商1余数为1;
  4. 将商1除以2,商0余数为1;
  5. 读数,读数字从最后的余数向前读,1111。

将十进制的(15)转换为八进制的步骤如下:
1、 将商15除以8,商1余数为7;
2、将商1除以8,商0余数为1;
3、 读数,读数字从最后的余数向前读,17。

将十进制的(15)转换为十六进制的步骤如下:
1、 将商15除以16,商0余数为15;
2、读数,读数字从最后的余数向前读,15,十六进制用字母F表示。

你可能感兴趣的:(VB.NET学习笔记:数据类型——进制转换(二进制、八进制、十进制和十六进制相互转换))