- 浏览: 430746 次
文章分类
最新评论
VB 进制转换大全(十进制、十六进制、八进制、二进制、二进制流)互转--转载的
原文地址:http://www.newxing.com/Tech/Program/VisualBasic/748.html
模块包含了下面的各种转换: 二进制转十进制 二进制转化为八进制 二进制转化为十六进制 八进制转化为十进制 八进制转化为二进制 八进制转化为十六进制 十进制转二进制 十进制转化为八进制 十进制转化为十六进制 十六进制转化为二进制 十六进制转化为八进制 十六进制转化为十进制 16进制转ASC 10进制长整数转4位16进制字符串 10进制长整数转2位16进制字符串 ASCII字符串转16进制字符串 反16进制数转10进制数,共8位 反16进制数转10进制数,共6位 反16进制数转10进制数,共4位 10进制数转反16进制数,共8位 0进制数转反16进制数,共6位 10进制数转反16进制数,共4位 记录集转二进制流 ASCII码转二进制流 二进制流转ASCII码 VBScript code复制代码'二进制转十进制 Public Function B2D(vBStr As String) As Long Dim vLen As Integer '串长 Dim vDec As Long '结果 Dim vG As Long '权值 Dim vI As Long '位数 Dim vTmp As String '临时串 Dim vN As Long '中间值 vLen = Len(vBStr) vG = 1 '初始权值 vDec = 0 '结果初值 B2D = vDec '返回初值 For vI = vLen To 1 Step -1 vTmp = Mid(vBStr, vI, 1) '取出当前位 vN = Val(vTmp) If vN < 2 Then '判断是不是合法二进制串,貌似不严谨,E文和符号会被判0而合法 vDec = vDec + vG * vN '得到中间结果 vG = vG + vG Else vDec = 0 'msgbox "不是有效的二进制数",vbokonly Exit Function End If Next vI B2D = vDec End Function '十进制转二进制 Public Function D2B(Dec As Long) As String D2B = "" Do While Dec > 0 D2B = Dec Mod 2 & D2B Dec = Dec \ 2 Loop End Function ' 用途:将十六进制转化为二进制 ' 输入:Hex(十六进制数) ' 输入数据类型:String ' 输出:H2B(二进制数) ' 输出数据类型:String ' 输入的最大数为2147483647个字符 Public Function H2B(ByVal Hex As String) As String Dim i As Long Dim b As String Hex = UCase(Hex) For i = 1 To Len(Hex) Select Case Mid(Hex, i, 1) Case "0": b = b & "0000" Case "1": b = b & "0001" Case "2": b = b & "0010" Case "3": b = b & "0011" Case "4": b = b & "0100" Case "5": b = b & "0101" Case "6": b = b & "0110" Case "7": b = b & "0111" Case "8": b = b & "1000" Case "9": b = b & "1001" Case "A": b = b & "1010" Case "B": b = b & "1011" Case "C": b = b & "1100" Case "D": b = b & "1101" Case "E": b = b & "1110" Case "F": b = b & "1111" End Select Next i While Left(b, 1) = "0" b = Right(b, Len(b) - 1) Wend H2B = b End Function ' 用途:将二进制转化为十六进制 ' 输入:Bin(二进制数) ' 输入数据类型:String ' 输出:B2H(十六进制数) ' 输出数据类型:String ' 输入的最大数为2147483647个字符 Public Function B2H(ByVal Bin As String) As String Dim i As Long Dim H As String If Len(Bin) Mod 4 <> 0 Then Bin = String(4 - Len(Bin) Mod 4, "0") & Bin End If For i = 1 To Len(Bin) Step 4 Select Case Mid(Bin, i, 4) Case "0000": H = H & "0" Case "0001": H = H & "1" Case "0010": H = H & "2" Case "0011": H = H & "3" Case "0100": H = H & "4" Case "0101": H = H & "5" Case "0110": H = H & "6" Case "0111": H = H & "7" Case "1000": H = H & "8" Case "1001": H = H & "9" Case "1010": H = H & "A" Case "1011": H = H & "B" Case "1100": H = H & "C" Case "1101": H = H & "D" Case "1110": H = H & "E" Case "1111": H = H & "F" End Select Next i While Left(H, 1) = "0" H = Right(H, Len(H) - 1) Wend B2H = H End Function ' 用途:将十六进制转化为十进制 ' 输入:Hex(十六进制数) ' 输入数据类型:String ' 输出:H2D(十进制数) ' 输出数据类型:Long ' 输入的最大数为7FFFFFFF,输出的最大数为2147483647 Public Function H2D(ByVal Hex As String) As Long Dim i As Long Dim b As Long Hex = UCase(Hex) For i = 1 To Len(Hex) Select Case Mid(Hex, Len(Hex) - i + 1, 1) Case "0": b = b + 16 ^ (i - 1) * 0 Case "1": b = b + 16 ^ (i - 1) * 1 Case "2": b = b + 16 ^ (i - 1) * 2 Case "3": b = b + 16 ^ (i - 1) * 3 Case "4": b = b + 16 ^ (i - 1) * 4 Case "5": b = b + 16 ^ (i - 1) * 5 Case "6": b = b + 16 ^ (i - 1) * 6 Case "7": b = b + 16 ^ (i - 1) * 7 Case "8": b = b + 16 ^ (i - 1) * 8 Case "9": b = b + 16 ^ (i - 1) * 9 Case "A": b = b + 16 ^ (i - 1) * 10 Case "B": b = b + 16 ^ (i - 1) * 11 Case "C": b = b + 16 ^ (i - 1) * 12 Case "D": b = b + 16 ^ (i - 1) * 13 Case "E": b = b + 16 ^ (i - 1) * 14 Case "F": b = b + 16 ^ (i - 1) * 15 End Select Next i H2D = b End Function ' 用途:将十进制转化为十六进制 ' 输入:Dec(十进制数) ' 输入数据类型:Long ' 输出:D2H(十六进制数) ' 输出数据类型:String ' 输入的最大数为2147483647,输出最大数为7FFFFFFF Public Function D2H(Dec As Long) As String Dim a As String D2H = "" Do While Dec > 0 a = CStr(Dec Mod 16) Select Case a Case "10": a = "A" Case "11": a = "B" Case "12": a = "C" Case "13": a = "D" Case "14": a = "E" Case "15": a = "F" End Select D2H = a & D2H Dec = Dec \ 16 Loop End Function ' 用途:将十进制转化为八进制 ' 输入:Dec(十进制数) ' 输入数据类型:Long ' 输出:D2O(八进制数) ' 输出数据类型:String ' 输入的最大数为2147483647,输出最大数为17777777777 Public Function D2O(Dec As Long) As String D2O = "" Do While Dec > 0 D2O = Dec Mod 8 & D2O Dec = Dec \ 8 Loop End Function ' 用途:将八进制转化为十进制 ' 输入:Oct(八进制数) ' 输入数据类型:String ' 输出:O2D(十进制数) ' 输出数据类型:Long ' 输入的最大数为17777777777,输出的最大数为2147483647 Public Function O2D(ByVal Oct As String) As Long Dim i As Long Dim b As Long For i = 1 To Len(Oct) Select Case Mid(Oct, Len(Oct) - i + 1, 1) Case "0": b = b + 8 ^ (i - 1) * 0 Case "1": b = b + 8 ^ (i - 1) * 1 Case "2": b = b + 8 ^ (i - 1) * 2 Case "3": b = b + 8 ^ (i - 1) * 3 Case "4": b = b + 8 ^ (i - 1) * 4 Case "5": b = b + 8 ^ (i - 1) * 5 Case "6": b = b + 8 ^ (i - 1) * 6 Case "7": b = b + 8 ^ (i - 1) * 7 End Select Next i O2D = b End Function ' 用途:将二进制转化为八进制 ' 输入:Bin(二进制数) ' 输入数据类型:String ' 输出:B2O(八进制数) ' 输出数据类型:String ' 输入的最大数为2147483647个字符 Public Function B2O(ByVal Bin As String) As String Dim i As Long Dim H As String If Len(Bin) Mod 3 <> 0 Then Bin = String(3 - Len(Bin) Mod 3, "0") & Bin End If For i = 1 To Len(Bin) Step 3 Select Case Mid(Bin, i, 3) Case "000": H = H & "0" Case "001": H = H & "1" Case "010": H = H & "2" Case "011": H = H & "3" Case "100": H = H & "4" Case "101": H = H & "5" Case "110": H = H & "6" Case "111": H = H & "7" End Select Next i While Left(H, 1) = "0" H = Right(H, Len(H) - 1) Wend B2O = H End Function ' 用途:将八进制转化为二进制 ' 输入:Oct(八进制数) ' 输入数据类型:String ' 输出:O2B(二进制数) ' 输出数据类型:String ' 输入的最大数为2147483647个字符 Public Function O2B(ByVal Oct As String) As String Dim i As Long Dim b As String For i = 1 To Len(Oct) Select Case Mid(Oct, i, 1) Case "0": b = b & "000" Case "1": b = b & "001" Case "2": b = b & "010" Case "3": b = b & "011" Case "4": b = b & "100" Case "5": b = b & "101" Case "6": b = b & "110" Case "7": b = b & "111" End Select Next i While Left(b, 1) = "0" b = Right(b, Len(b) - 1) Wend O2B = b End Function ' 用途:将八进制转化为十六进制 ' 输入:Oct(八进制数) ' 输入数据类型:String ' 输出:O2H(十六进制数) ' 输出数据类型:String ' 输入的最大数为2147483647个字符 Public Function O2H(ByVal Oct As String) As String Dim Bin As String Bin = O2B(Oct) O2H = B2H(Bin) End Function ' 用途:将十六进制转化为八进制 ' 输入:Hex(十六进制数) ' 输入数据类型:String ' 输出:H2O(八进制数) ' 输出数据类型:String ' 输入的最大数为2147483647个字符 Public Function H2O(ByVal Hex As String) As String Dim Bin As String Hex = UCase(Hex) Bin = H2B(Hex) H2O = B2O(Bin) End Function '==================================================== '16进制转ASC Function H2A(InputData As String) As String Dim mydata mydata = Chr(Val("&H" & InputData)) H2A = mydata Exit Function End Function '10进制长整数转4位16进制字符串 Function S2H(Num As Long) As String Dim mynum As String mynum = Hex(Num) If Len(mynum) = 1 Then mynum = "000" + mynum If Len(mynum) = 2 Then mynum = "00" + mynum If Len(mynum) = 3 Then mynum = "0" + Left(mynum, 2) + Right(mynum, 1) If Len(mynum) = 4 Then mynum = Right(mynum, 2) + Left(mynum, 2) S2H = mynum End Function '10进制长整数转2位16进制字符串 Function S2H2(Num As Long) As String Dim mynum As String mynum = Hex(Num) If Len(mynum) = 1 Then mynum = "0" + mynum S2H2 = mynum End Function 'ASCII字符串转16进制字符串 Public Function A2H(str As String) As String Dim strlen As Integer Dim i As Integer Dim mystr As String mystr = "" strlen = Len(str) For i = 1 To strlen Step 1 mystr = mystr + Hex$(Asc(Mid(str, i, 1))) Next i A2H = mystr End Function '===================================================== '进制反转 '===================================================== '反16进制数转10进制数,共8位 Function FHexToInt(ByVal str As String) As String Dim text1 As String text1 = str Dim text2 As String text2 = Mid(text1, 7, 2) Dim text3 As String text3 = Mid(text1, 5, 2) Dim text4 As String text4 = Mid(text1, 3, 2) Dim text5 As String text5 = Mid(text1, 1, 2) FHexToInt = Val("&H" & text2 & text3 & text4 & text5) Exit Function End Function '反16进制数转10进制数,共6位 Function FHexToInt6(ByVal str As String) As String Dim text1 As String text1 = str Dim text2 As String text2 = Mid(text1, 5, 2) Dim text4 As String text3 = Mid(text1, 3, 2) Dim text5 As String text4 = Mid(text1, 1, 2) FHexToInt6 = Val("&H" & text2 & text3 & text4) Exit Function End Function '反16进制数转10进制数,共4位 Function FHexToInt4(ByVal str As String) As String Dim text1 As String text1 = str Dim text2 As String text2 = Mid(text1, 3, 2) Dim text4 As String text3 = Mid(text1, 1, 2) FHexToInt4 = Val("&H" & text2 & text3) Exit Function End Function '10进制数转反16进制数,共8位 Function IntToFHex(ByVal nums As Long) As String Dim text1 As String 'text1 = Convert.ToString(nums, &H10) text1 = O2H(nums) If (Len(text1) = 1) Then text1 = ("0000000" & text1) End If If (Len(text1) = 2) Then text1 = ("000000" & text1) End If If (Len(text1) = 3) Then text1 = ("00000" & text1) End If If (Len(text1) = 4) Then text1 = ("0000" & text1) End If If (Len(text1) = 5) Then text1 = ("000" & text1) End If If (Len(text1) = 6) Then text1 = ("00" & text1) End If If (Len(text1) = 7) Then text1 = ("0" & text1) End If Dim text2 As String text2 = Mid(text1, 7, 2) Dim text3 As String text3 = Mid(text1, 5, 2) Dim text4 As String text4 = Mid(text1, 3, 2) Dim text5 As String text5 = Mid(text1, 1, 2) IntToFHex = text2 & text3 & text4 & text5 Exit Function End Function '10进制数转反16进制数,共6位 Function IntToFHex6(ByVal nums As Long) As String Dim text1 As String text1 = O2H(nums) If (Len(text1) = 1) Then text1 = ("00000" & text1) End If If (Len(text1) = 2) Then text1 = ("0000" & text1) End If If (Len(text1) = 3) Then text1 = ("000" & text1) End If If (Len(text1) = 4) Then text1 = ("00" & text1) End If If (Len(text1) = 5) Then text1 = ("0" & text1) End If Dim text2 As String text2 = Mid(text1, 5, 2) Dim text3 As String text3 = Mid(text1, 3, 2) Dim text4 As String text4 = Mid(text1, 1, 2) IntToFHex6 = text2 & text3 & text4 Exit Function End Function '10进制数转反16进制数,共4位 Function IntToFHex4(ByVal nums As Long) As String Dim text1 As String text1 = O2H(nums) If (Len(text1) = 1) Then text1 = ("000" & text1) End If If (Len(text1) = 2) Then text1 = ("00" & text1) End If If (Len(text1) = 3) Then text1 = ("0" & text1) End If Dim text2 As String text2 = Mid(text1, 3, 2) Dim text3 As String text3 = Mid(text1, 1, 2) IntToFHex4 = text2 & text3 Exit Function End Function '========================================== Public Function B2S(ByVal str As Byte) strto = "" For i = 1 To LenB(str) If AscB(MidB(str, i, 1)) > 127 Then strto = strto & Chr(AscB(MidB(str, i, 1)) * 256 + AscB(MidB(str, i + 1, 1))) i = i + 1 Else strto = strto & Chr(AscB(MidB(str, i, 1))) End If Next B2S = strto End Function Public Function V2H(ByVal sHex As String, Optional bUnicode As Boolean) Dim sByte As Variant Dim byChar() As Byte Dim i As Long sHex = Replace(sHex, vbCrLf, "") sByte = Split(sHex, " ") ReDim byChar(0 To UBound(sByte)) As Byte For i = 0 To UBound(sByte) byChar(i) = Val("&h" & sByte(i)) Next If bUnicode Then V2H = byChar Else V2H = StrConv(byChar, vbUnicode) End If End Function '记录集转二进制流 Public Function R2B(rs As Recordset) As Variant '记录集转换为二进制数据 Dim objStream As Stream Set objStream = New Stream objStream.Open objStream.Type = adTypeBinary rs.Save objStream, adPersistADTG objStream.Position = 0 R2B = objStream.Read() Set objStream = Nothing End Function 'ASCII码转二进制流 Public Function A2B(str As String) As Variant Dim a() As Byte, s As String s = str a = StrConv(s, vbFromUnicode) '字符串转换为byte型 'a 是byte数组,你可以在程序中调用 ,但不能在textbox中显示。 A2B = a End Function '二进制流转ASCII码 Public Function B2A(vData As Variant) As String Dim s As String s = StrConv(vData, vbUnicode) 'byte型转换为字符串 B2A = s End Function
相关推荐
VB--十进制-八进制-十六进制-二进制相互转换大全.doc
VB--十进制,八进制,十六进制,二进制相互转换大全
在IFIX中VB十进制八进制十六进制二进制转换代码
VB 进制转换程序 二,八,十,十六 进制相互转换
VB的十进制数转换为二进制、八进制、十六进制。 来源网络
一个简易进制转换器,可以实现二、八、十、十六进制间所有可能的进制转换,并且支持十进制 负 数向二进制的转换,有详细源代码及详细设计报告,有需要的可以下了去用用...
VB十进制八进制十六进制二进制相互转换大全.pdf
vb做界面的二进制计算器。可以自己在写上十六进制和八进制转换!
用VB做的简单的进制转换,可以把十进制转换为二进制,八进制和十六进制。
本源码演示vb6.0在十进制、二进制、八进制、十六进制等多种进制间的转换,同时还可进行十进制数分解,使用时,只需在右侧任意一个方框中输入需要转换的数字,点击“确定”按钮即可实现转换,转换记录会显示在左侧的...
本文主要介绍的是VB的十进制,八进制,十六进制,二进制相互转换大全
从上面几个函数我们可以看到,VB中没有为我们提供专门的函数供我们将表达式或是数据转换成十进制和二进制,不过十进制的转换我们可以通过Cint函数轻松完成,而二进制的实现我们可以通过二进制和八进制,十六进制的关系...
小巧实用的二、八、十、十六进制转换器,附源码
工具提供以下14种转换功能:十进制转二进制、十进制转八进制、十进制转十六进制、二进制转十进制、二进制转十六进制、十六进制转十进制、十六进制转二进制;字符串转ASCII码、字符串转Unicode、字符串完全转Unicode...
工具提供以下14种转换功能:十进制转二进制、十进制转八进制、十进制转十六进制、二进制转十进制、二进制转十六进制、十六进制转十进制、十六进制转二进制;字符串转ASCII码、字符串转Unicode、字符串完全转Unicode...
工具提供以下14种转换功能:十进制转二进制、十进制转八进制、十进制转十六进制、二进制转十进制、二进制转十六进制、十六进制转十进制、十六进制转二进制;字符串转ASCII码、字符串转Unicode、字符串完全转Unicode...
Binary Converter NET是在vb.net中创建的程序,用于转换数字系统,例如:将二进制转换为十进制,将十六进制转换为八进制或将八进制转换为二进制,反之亦然。 该程序还支持更多的转换和显示您的计算结果的简单程序...
边输入边刷新很好用的,VB编写的,自己第一次用学习 很好用 真的 希望大家共同学习
(A ) A、汇编语言 B、VB C、VF D、SQL 3、计算机能够直接识别的进位计数制是(B ) A、十进制 B、二进制 C、八进制 D、十六进制 4、ASCII码又称美国信息交换标准码,是用(C )位二进制编码表示。 A、4 B、7 C、8 ...
2、进制转换:在二进制、八进制、十进制、十六进制之间相互转换。 3、人民币大小写互换:在Excel中,很多时候需要将小写的金额数字转换成大写,而Excel提供的函数转换出来的格式并不符合中国人的习惯,所以... ...