精华内容
下载资源
问答
  • VB十进制转换为二进制、八进制、十六进制。 来源网络
  • vb进制转换代码.doc

    2020-04-23 23:48:21
    VB 各种进制相互转换大全 ' 用途将十进制转化为二进制 ' 输入Dec(十进制数) ' 输入数据类型Long ' 输出DEC_to_BIN(二进制数) ' 输出数据类型String ' 输入的最大数为2147483647,输出最大数为...Public Function DEC_to_...
  • 模块包含了下面的各种转换: 二进制转十进制二进制转化为八进制二进制转化为十六进制 八进制转化为十进制八进制转化为二进制八进制转化为十六进制 十进制转二进制十进制转化为八进制十进制转化为十六进制 十六进制...

    模块包含了下面的各种转换:

    二进制转十进制
    二进制转化为八进制
    二进制转化为十六进制

    八进制转化为十进制
    八进制转化为二进制
    八进制转化为十六进制

    十进制转二进制
    十进制转化为八进制
    十进制转化为十六进制

    十六进制转化为二进制
    十六进制转化为八进制
    十六进制转化为十进制

    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码

    代码如下:

    '二进制转十进制
    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相关


    VB 读写TXT文本文件函数

    VB 提取TextBox 文本框中指定一行字符串

    VB 获取汉字拼音的首字母

    VB 汉字字符串转换成拼音

    VB判断指定名字的进程是否存在函数

    VB 两种方法实现热键

    VB 使用SendMessage枚举文件与目录

    VB 二进制数组与十六进制字符串相互转换

    VB 二进制数据读写实例

    VB 进制转换大全(十进制、十六进制、八进制、二进制、二进制流)互转

    VB 判断是否文本文件

    VB 读取UTF-8编码文件函数

    VB 按指定编码格式写入文本文件

    VB UTF-8 URL编码函数

    VB 实现UTF-8 GB2312互转

    VB 设置ListView中指定一行的背景颜色

    VB SendMessage向其他程序窗口发送字符串消息实例

    VB Listview导出到CSV文件函数

    vb卸载所有窗体

    VBNull, Empty, Nothing, and vbNullString的区别

    利用API函数计算程序运行时间VB

    获取快捷方式原文件路径vb路径

    利用VB函数Dir()实现递归搜索目录

    VB数组的清除和重新定义

    RtlAdjustPrivilege来调整进程权限(VB6.0代码)

    获取对象的接口信息(方法/属性/事件)(VB6代码)

    VB6中给数组赋值的限制

    [vb]一些窗口消息的详解

    VB直接播放EXE文件中的声音文件

    VB中利用CopyMemory使用指针

    VB读写注册表的三种方法

    [VB]SaveSetting 语句 和 DeleteSetting 语句

    VB APP对象属性一览表 + 灵活使用VBAPP对象

    [vb]SendMessageA函数

    使用VB绘制抛物线动画曲线

    关于vb中的容器

    [vb]利用WScript.Shell对象隐藏cmd命令行运行

    浅析VB For Each.Next语句

    VB中窗体模块、标准模块、类模块的区别

    引用 VB类模块

    VB中什么是类,类模块有什么作用

    VB SendKeys 语句

    VB 全局热键

    VB轻松调用其他程序

    vb读取txt文件到textbox

    如何去优化你的VB程序3

    如何去优化你的VB程序2

    如何去优化你的VB程序1

    [VB]在状态栏中显示帮助信息

    [VB]把屏幕保存为图像

    Mp3Play.ocx控件让音乐之声响起来


    更多精彩>>>
    展开全文
  • vb进制转换代码.pdf

    2020-03-01 13:56:15
    VB VVBB 各种进制相互转换大全 ' 用途将十进制转化为二进制 ' 输入Dec(十进制数) ' 输入数据类型Long ' 输出DEC_to_BIN(二进制数) ' 输出数据类型String ' 输入的最大数为2147483647,输出最大数为...
  • 原文地址:http://www.newxing.com/Tech/Program/VisualBasic/748.html...八进制转化为二进制 八进制转化为十六进制 十进制转二进制 十进制转化为八进制 十进制转化为十六进制 十六进制转化为二进制 十六进制

     

    原文地址: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题将十进制正整数转换为二进制.txt
  • 原文地址:http://www.newxing.com/Tech/Program/VisualBasic/748.html...八进制转化为二进制 八进制转化为十六进制 十进制转二进制 十进制转化为八进制 十进制转化为十六进制 十六进制转化为二进制 十六...

    原文地址: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
    

    展开全文
  • 在.NET Framework中,System.Convert类中的ToString方法和ToInt32(ToInt64)方法都可以方便的实现各种进制间的相互转换。...即可以将十进制整数转换二进制、八进制、十进制(无实际意义)或十...

    在.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)
    

    测试结果如图:
    在这里插入图片描述

    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
        ''' <summary>
        ''' 进制转换
        ''' </summary>
        ''' <param name="value">二进制、八进制、十进制或十六进制整数的字符串表示形式</param>
        ''' <param name="fromBase">与value值中的相对应的基数(2、8、10或16)</param>
        ''' <param name="toBase">要转换成的进制基数(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
    

    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)二进制、八进制、十六进制转十进制

    进制转换
    可见,在十进制中,每一位表示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进制转换

    千次阅读 2007-01-29 11:23:00
    用途:将十进制转化为二进制 输入:Dec(十进制数) 输入数据类型:Long 输出:DEC_to_BIN(二进制数) 输出数据类型:String 输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1)Public...
  • 十进制,八进制,十六进制,二进制相互转换' 用途:将十进制转化为二进' 输入:Dec(十进制数)' 输入数据类型:Long' 输出:DEC_to_BIN(二进制数)' 输出数据类型:String' 输入的最大数为2147483647,输出最大数为...
  • 十进制转换二进制(补码)

    千次阅读 2005-05-04 19:59:00
    借鉴了反码算法的经验,在转换为补码的函数中,要以求反码函数为基础,...十进制转换为二进制补码的VB6代码:Public Function BinaryConvertC(ByVal iNum As Integer, Optional ByVal iLength As Integer = 8) As String
  • '-------------------------------------------------' 用途:将十进制转化为二进制' 输入:Dec(十进制数)' 输入数据类型:Long' 输出:DEC_to_BIN(二进制数)' 输出数据类型:String' 输入的最大数为2147483647,输出...
  • 十进制转换二进制(反码)

    千次阅读 2005-05-04 19:38:00
    这是段把十进制转换为二进制反码的VB6代码,这段代码需要转换为原码函数(BinaryConvertA)的支持,开始的时候,我把它写成一个了独立的函数,但最后还是改到了现在这个样子,感觉如果转换原码代码部分有错误,可以把错误...
  • VB进制转换大全

    2011-01-24 13:35:16
    ' 用途:将十进制转化为二 进 制 ' 输入:Dec(十进制数) ' 输入数据类型:Long ' 输出:DEC_to_BIN(二 进 制数) ' 输出数据类型:String ' 输入的最大数为2147483647,输出最大数为...
  • VB做的简单的进制转换,可以把十进制转换为二进制,八进制和十六进制。
  • VB 各种进制相互转换

    2007-08-11 15:26:00
    ------------------------------------------------- 用途:将十进制转化为二进制 输入:Dec(十进制数) 输入数据类型:Long 输出:DEC_to_BIN(二进制数) 输出数据类型:String 输入的最大数为2147483647,输出最大数...
  • 各位大虾,本人刚接触VB6.0 ,不知道带小数的十进制数如何转换为二进制,请提供代码以代学习,谢谢!
  • VB 各种进制相互转换大全(一)

    千次阅读 2008-08-29 10:44:00
    用途:将十进制转化为二进制输入:Dec(十进制数)输入数据类型:Long输出:DEC_to_BIN(二进制数)输出数据类型:String输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1)Public Function ...
  • VB6支持96个1的二进制十进制的互相转换程序 Public Function BIN_to_DEC(ByVal Bin As String) As Variant****************************************************************** 用途:将二进制转化为十进制 输入...
  • 浮点数保存的字节格式如下S 代表符号位,1 是负,0 是正E 偏移127 的幂,二进制阶码=(EEEEEEEE)-127。M 24 位的尾数保存在23 位中,只存储23 位,最高位固定1。此方法用最较少的位数实现了较高的有效位数,提高了...
  • vb下各种进制转换

    2011-09-30 10:19:19
    '' 用途:将十进制转化为二进制 '' 输入:Dec(十进制数) '' 输入数据类型:Long '' 输出:DEC_to_BIN(二进制数) '' 输出数据类型:String '' 输入的最大数为2147483647,输出最大数为11111111111111111111
  • VB中各种进制转换

    2007-11-16 16:27:00
    ------------------------------------------------- 用途:将十进制转化为二进制 输入:Dec(十进制数) 输入数据类型:Long 输出:DEC_to_BIN(二进制数) 输出数据类型:String 输入的最大数为2147483647,输出最大数...
  • 二十进制换算法。福建吴世昌原创。 类似于16进制,26进制是每逢26进1位,用a-z表示0-25,可以把数字转换成字母串。也可把字母串还原数字。 适合用来实现数字串缩短,或简单的加密解密。
  • (2)实现上述功能的VB程序如下,请在①、②、③的划线处填入合适的代码。Dim m As Integer' 学生人数Dim score(1 To 3000) As Integer ' 存放学生分数Dim xm(1 To 1000) As String ' 存放学生姓名Private Sub Command...
  • 进制转换和数码管代码生成工具 该工具用VB写的,可实现二进制十进制和十六进制相互即时转换,实现共阴共阳数码管任意管脚的七段码生成,软件提供两种常用管脚排列可以相互转换,也可自己输入。需要的朋友请下载...
  • VB中各种进制的表示

    2012-07-11 10:13:00
    H限定 表示八进制、十六进制数 不加的话 默认为十进制二进制好像没有 HEX()函数是将数值转换成十六进制 OCT()是。。。八进制 转载于:https://www.cnblogs.com/darrenz/archive/2012/07/11/2585770.html...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

vb十进制转换为二进制