VB如何将大数字转换为二进制字符串

fdmgood2 2017-07-24 11:46:53
我这边需要将一个大数字转换为二进制字符串判断权限位,VB貌似只能对LONG型数字转换,大于就不行了.
比如这个数字:289356276212170752
转换为二进制串为‭010000000100000000000000000000001001001010000000000000000000‬
但是VB只能转为LONG型,这个数太大了.
如何转换为二进制字符串呢?
...全文
601 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
笨狗先飞 2017-07-24
处理不了的。。。
回复
脆皮大雪糕 2017-07-24
decimal是96 位12个字节的,你的标志位省着点用 另外,我没理解,为毛一定就要用一个数字来存储,你也可以分解成多个long来存储啊,你已经要先确认你的标志位在第几位了,转换一下变成确认标志位在第几个long上的第几位不就得了。思维要换一换,用decimal这种非标准的类型在数据交换上可能会有一些莫名其妙的问题。
回复
脆皮大雪糕 2017-07-24
你的这个例子用decimal类型还能处理。 下面这段代码暂时能抗住你这个例子。如果数字大到下面这段也溢出那就要自己实现大数运算了

    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
回复
舉杯邀明月 2017-07-24
应该自己实现一个“大数运算”的函数。
回复
X-i-n 2017-07-24
最简单的办法是用boolean数组 string保存0101的字符也行,处理起来也很简单,效率稍微低一点。 实在想自己处理的话,自己写一个除数为2的大数除法,用辗转求余来算出2进制形式。处理起来相对最复杂,但是只比上面的方法复杂了一点点,真动起手来也不难。
回复
发动态
发帖子
网络编程
创建于2007-09-28

1469

社区成员

VB 网络编程
申请成为版主
社区公告
暂无公告