在.NET Framework中,System.Convert類中的ToString方法和ToInt32(ToInt64)方法都可以方便的實(shí)現(xiàn)各種進(jìn)制間的相互轉(zhuǎn)換。
Convert .ToString 方法可以將整數(shù)值轉(zhuǎn)換為其指定基數(shù)(必須是 2、8、10 或 16)的等效字符串表示形式。即可以將十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十進(jìn)制(無(wú)實(shí)際意義)或十六進(jìn)制數(shù)字的字符串。
Convert .ToString(value,toBase)
參數(shù):value——整型,要轉(zhuǎn)換的整數(shù);toBase—— System .Int32 ,返回值的基數(shù),必須是 2、8、10 或 16。
返回值:System .String ,以 toBase 為基的 value 的字符串表示形式。
如:
Dim int As Integer = 256 '十進(jìn)制轉(zhuǎn)二進(jìn)制 Dim str2 As String = Convert.ToString(int, 2) '十進(jìn)制轉(zhuǎn)八進(jìn)制 Dim str8 As String = Convert.ToString(int, 8) '十進(jìn)制轉(zhuǎn)十進(jìn)制 Dim str10 As String = Convert.ToString(int, 10) '十進(jìn)制轉(zhuǎn)十六進(jìn)制 Dim str16 As String = Convert.ToString(int, 16) Console.WriteLine("十進(jìn)制轉(zhuǎn)二進(jìn)制:" & str2) Console.WriteLine("十進(jìn)制轉(zhuǎn)八進(jìn)制:" & str8) Console.WriteLine("十進(jìn)制轉(zhuǎn)十進(jìn)制:" & str10) Console.WriteLine("十進(jìn)制轉(zhuǎn)十六進(jìn)制:" & str16)
測(cè)試結(jié)果如圖:
將指定基數(shù)的數(shù)字的字符串表示形式轉(zhuǎn)換為等效的整數(shù)。即可以將二進(jìn)制、八進(jìn)制、十進(jìn)制(無(wú)實(shí)際意義)或十六進(jìn)制整數(shù)的字符串表示形式轉(zhuǎn)換為十進(jìn)制的數(shù)字(整型)。
Convert .ToUInt64(value,fromBase)
參數(shù):value—— System .String ,包含要轉(zhuǎn)換的數(shù)字的字符串;fromBase——System .Int32 ,value 中數(shù)字的基數(shù),它必須是 2、8、10 或 16。
返回值:整型,與 value 中數(shù)字等效的 整數(shù),如果 value 為 Nothing,則為 0(零)。
如:
'二進(jìn)制 Dim str2 As String = "100000000" '八進(jìn)制 Dim str8 As String = "400" '十六進(jìn)制 Dim str16 As String = "100" '二進(jìn)制轉(zhuǎn)十進(jìn)制 Dim int2 As Integer = Convert.ToInt32(str2, 2) '八進(jìn)制轉(zhuǎn)十進(jìn)制 Dim int8 As Integer = Convert.ToInt32(str8, 8) '十六進(jìn)制轉(zhuǎn)十進(jìn)制 Dim int16 As Integer = Convert.ToInt32(str16, 16)
先把字符串轉(zhuǎn)換成十進(jìn)制數(shù)字,再把數(shù)字轉(zhuǎn)換成其他進(jìn)制的字符串。
Sub Main() '二進(jìn)制 Dim str2 As String = "100000000" '八進(jìn)制 Dim str8 As String = "400" '十六進(jìn)制 Dim str16 As String = "100" '二進(jìn)制轉(zhuǎn)十六進(jìn)制 Dim str2to16 As String = ConvertString(str2, 2, 16) '八進(jìn)制轉(zhuǎn)十六進(jìn)制 Dim str8to16 As String = ConvertString(str8, 8, 16) '十六進(jìn)制轉(zhuǎn)二進(jìn)制 Dim str16to2 As String = ConvertString(str16, 16, 2) End Sub ''' <summary> ''' 進(jìn)制轉(zhuǎn)換 ''' </summary> ''' <param name="value">二進(jìn)制、八進(jìn)制、十進(jìn)制或十六進(jìn)制整數(shù)的字符串表示形式</param> ''' <param name="fromBase">與value值中的相對(duì)應(yīng)的基數(shù)(2、8、10或16)</param> ''' <param name="toBase">要轉(zhuǎn)換成的進(jìn)制基數(shù)(2、8、10或16)</param> ''' <returns></returns> 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
Object.ToString方法或String.Format方法可以將十進(jìn)制整數(shù)轉(zhuǎn)換成十六進(jìn)制的數(shù)字字符串表現(xiàn)形式,但沒(méi)有提供其他進(jìn)制的轉(zhuǎn)換。
如:
Dim int As Integer = 256 Dim strS As String = int.ToString("x") Dim strF As String = String.Format("{0:x}", int)
比如十進(jìn)制的15,其二進(jìn)制為1111,八進(jìn)制為17,而16進(jìn)制為F,各種進(jìn)制之間是如何轉(zhuǎn)換的呢?
方法:除相應(yīng)進(jìn)制的基數(shù)(如二進(jìn)制的基數(shù)為2、八進(jìn)制的基數(shù)為8、十六進(jìn)制的基數(shù)為16)取余法,即每次將整數(shù)部分除以基數(shù),余數(shù)為該位權(quán)上的數(shù),而商繼續(xù)除以基數(shù),余數(shù)又為上一個(gè)位權(quán)上的數(shù),這個(gè)步驟一直持續(xù)下去,直到商為0為止,最后讀數(shù)時(shí)候,從最后一個(gè)余數(shù)讀起,一直到最前面的一個(gè)余數(shù)。
例:將十進(jìn)制的(15)轉(zhuǎn)換為二進(jìn)制的步驟如下:
將商15除以2,商7余數(shù)為1;
將商7除以2,商3余數(shù)為1;
將商3除以2,商1余數(shù)為1;
將商1除以2,商0余數(shù)為1;
讀數(shù),讀數(shù)字從最后的余數(shù)向前讀,1111。
將十進(jìn)制的(15)轉(zhuǎn)換為八進(jìn)制的步驟如下:
1、 將商15除以8,商1余數(shù)為7;
2、將商1除以8,商0余數(shù)為1;
3、 讀數(shù),讀數(shù)字從最后的余數(shù)向前讀,17。
將十進(jìn)制的(15)轉(zhuǎn)換為十六進(jìn)制的步驟如下:
1、 將商15除以16,商0余數(shù)為15;
2、讀數(shù),讀數(shù)字從最后的余數(shù)向前讀,15,十六進(jìn)制用字母F表示。
聯(lián)系客服