初始自学VB6,求数制转换源程序(十进制数、2进制互转程序)

qq_25658267 2017-08-18 07:41:32
还有MSComm控件应用详解。谢谢!99801686@QQ.COM
...全文
659 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdingyun 2017-08-20
  • 打赏
  • 举报
回复
MSComm 控件 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。 语法 MSComm 说明 MSComm 控件提供下列两种处理通讯的方式: 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。 在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 每个使用的 MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。可以在 Windows“控制面板”中改变端口地址和中断地址。 尽管 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。 属性 描述 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。 Output 向传输缓冲区写一个字符串。
笨狗先飞 2017-08-19
  • 打赏
  • 举报
回复
任意数制转换

'从十进制转成任意进制,Num 要转换的数字,NumS数制值,16进制,你可以填16,返回值是个数组
Private Function FromDec(ByVal Num As Long, ByVal NumS As Integer) As Integer()
    Dim C As Integer, Result() As Integer
    Do Until Num = 0
        ReDim Preserve Result(C)
        Result(C) = Num Mod NumS
        C = C + 1
        Num = Num \ NumS
    Loop
    FromDec = Result
End Function

'从任意进制转成十进制 Num()任意进制数,是个数组,你可以从前一个函数里得到,NumS还是进制数,返回值是个十进制数
Private Function ToDec(ByRef Num() As Integer, ByVal NumS As Integer) As Long
    Dim I As Integer, Result As Long
    For I = 0 To UBound(Num)
        Result = Result * NumS + Num(I)
    Next
    ToDec = Result
End Function

'生成一个进制串,Num就是转成任意进制后的数,是个数组,NumStr这个进制数的符号序列,比如十六进制的序列就是0123456789ABCDEF,不填的话出来(1)(2)这种样子的数
Private Function ShowValue(ByRef Num() As Integer, Optional ByVal NumStr As String = "") As String
    Dim I As Integer, Result As String
    For I = 0 To UBound(Num)
        If Len(NumStr) > 0 Then
            Result = Mid(NumStr, Num(I) + 1, 1) & Result
        Else
            Result = "(" & Num(I) & ")" & Result
        End If
    Next
    ShowValue = Result
End Function

Private Sub Form_Load()
    Dim Arr() As Integer
    
    Arr = FromDec(634, 16) '把634转成16进制结果保存在Arr数组中
    Debug.Print ShowValue(Arr, "0123456789ABCDEF") '显示Arr数组中的16进制数
    
    Arr = FromDec(634, 2) '把64转成2进制结果保存在Arr数组中
    Debug.Print ShowValue(Arr, "01") '显示Arr数组中的2进制数
End Sub
脆皮大雪糕 2017-08-18
  • 打赏
  • 举报
回复
在另外一个帖子里答复的,把一个字符串形式的大数转换为字符串形式二进制输出。

    Dim n As Variant
    Dim strOut As String
    n = CDec("289356276212170752")
     
    Do While n > 0
        If Int(n / 2) = n / 2 Then
            strOut = "0" & strOut
        Else
            strOut = "1" & strOut
        End If
        n = Int(n / 2)
    Loop
    MsgBox strOut

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧