高分求超大整数任意进制转换代码

2066 2006-04-29 05:01:14
高分求超大整数任意进制转换代码

一般软件只提供2,8,10,16进制互相转换,且数值长度不超过30位。

有没有用办法用vb.net实现任意进制转换,且不限制数字长度。
数字输出可全部用空格分隔的数字,不用a-z字母。
比如一个64进制的数:50 63 1,最高位是50,其次是63,最低位是1

...全文
333 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
2066 2006-05-01
  • 打赏
  • 举报
回复
非常感谢星级大侠xxuu503(我爱郭芙蓉!)!

效率低一些没有关系。

关键是要能支持超大整数运算,至少要支持300位十进制数字。
xxuu503 2006-04-30
  • 打赏
  • 举报
回复
我写的是,用循环除法求商,来做进制的变换

可能效率会稍微低一些
xxuu503 2006-04-30
  • 打赏
  • 举报
回复
Public Function Change(ByVal Num As String, ByVal a As Integer, ByVal b As Integer) As String

这个函数作进制变换

Num:要变换进制的数据

a:变换前的进制

b:变换后的进制

------------------------------------------------------------------------------

Public Sub Div(ByVal Num As String, ByVal a As Integer, ByVal b As Integer, ByRef x As String, ByRef y As Integer)

这个函数作除法

Num:被除数

a:变换前的进制

b:变换后的进制//就是除数

x:商

y:余数
xxuu503 2006-04-30
  • 打赏
  • 举报
回复
Module Module1

Sub Main()
Dim Num As String = "9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9"
Console.WriteLine(Change(Num, 8, 64))
Console.ReadLine()
End Sub
Public Function Change(ByVal Num As String, ByVal a As Integer, ByVal b As Integer) As String
Dim s() As String
s = Num.Split(" ")
For Each str As String In s
If Integer.Parse(str) > a Then
Return "搞错了,兄弟!"
End If
Next
Dim x As String = ""
Dim y As Integer
Div(Num, a, b, x, y)
If x.Length > 0 Then
Return Change(x, a, b) + " " + y.ToString
Else
Return y.ToString
End If
End Function

Public Sub Div(ByVal Num As String, ByVal a As Integer, ByVal b As Integer, ByRef x As String, ByRef y As Integer)
Dim d As Integer
If Num.IndexOf(" ") > -1 Then
d = Integer.Parse(Num.Substring(0, Num.IndexOf(" "))) + y * a
Num = Num.Substring(Num.IndexOf(" ") + 1)
Else
d = Integer.Parse(Num) + y * a
Num = ""
End If
If d \ b = 0 And x = "" Then
Else
x += " " + (d \ b).ToString
End If
y = d Mod b
x = x.Trim
If Num.Length > 0 Then
Div(Num, a, b, x, y)
End If
End Sub
End Module
2066 2006-04-30
  • 打赏
  • 举报
回复
没有高手吗?
xxuu503 2006-04-30
  • 打赏
  • 举报
回复
考虑不考虑负数补码的问题?
xxuu503 2006-04-30
  • 打赏
  • 举报
回复
超大是多大?

先问一下?
windows19790408 2006-04-30
  • 打赏
  • 举报
回复
当字符处理,然后转成整数,然后位移,得出的结果是你想要的吗?
2066 2006-04-29
  • 打赏
  • 举报
回复
谁能提供一下示例代码?

copico 2006-04-29
  • 打赏
  • 举报
回复
弄成字符串是个好办法
直接当数字,没有多大
yurow 2006-04-29
  • 打赏
  • 举报
回复
处理成字符串处理
2066 2006-04-29
  • 打赏
  • 举报
回复
我看有的计算软件能实现超大整数运算,不过是c++写的,.net应该也能实现吧
copico 2006-04-29
  • 打赏
  • 举报
回复
这个要系统支持的
和系统位数有关,不可能是无限大

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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