回 帖 发 新 帖 刷新版面

主题:[原创]进制转换工具

这个是公共发布版,不含代码。因为这种程序对各位大大来讲小菜一碟,所以就不拿源代码献丑了,呵呵。提供给大家一个工具吧。貌似windows的计算器也支持进制转换,我后来才发现…………


【由我编辑于:2011年3月23日18:12:38】

回复列表 (共4个回复)

沙发

不知道楼主为何把一个小小的程序弄成了128K?太不可思议了。
我原先编了个任意进制转换程序,给你参考下:

一、10 进制转换为任意进制

  函数中有 2 个形参:
Dat:待转换的 10 进制数据
Num:欲转换的进制
  例如,把 10 进制的 65536 转换为 8 进制:

  A$ = DecToAny(65536, 8) 'A$ = 20,0000
  
  如果转换成功,输出转换好的数值型字符串,且每 4 个字符之间以逗号分
开;如失败,则输出字符“0”。

Function DecToAny(ByVal Dat As Double, Num As Integer) As String
On Error GoTo Err1
Dim A As Double, B As Double, D As String, X As Integer
Do
  A = Int(Dat / Num): B = Dat Mod Num: Dat = A
  If B > 9 Then D = Chr(B + 55) + D Else D = LTrim(Str(B)) + D
  X = X + 1: If X = 4 And Dat > 0 Then X = 0: D = "," + D
Loop While Dat > 0
DecToAny = D
Exit Function
Err1:
DecToAny = "0"
End Function


二、任意进制转换为 10 进制

  函数中有 2 个形参:
Dat:待转换的数据字符串
Num:待转换的进制
  例如,把 16 进制的 FFFF 转换为 10 进制:
  
  AA = AnyToDec("FFFF", 16)'AA = 65535
  
  如果转换成功,输出转换好的双精度 10 进制数据;如失败,则输出 0。

Function AnyToDec(Dat As String, Num As Integer) As Double
On Error GoTo Err2
Dim A As Integer, B As Double, D As String
Dim I As Integer, L As Integer
L = Len(Dat)
For I = 0 To L - 1
  D = Mid(Dat, L - I, 1): A = Asc(D) - 48
  If A > 9 Then A = A - 7: If A > 15 Then A = A - 32
  If A > 0 Then B = B + A * Num ^ I
Next
AnyToDec = B
Exit Function
Err2:
AnyToDec = 0
End Function

板凳

因为没有让你自己选进制,所以比较大一点。

3 楼

我这个主要是含有图片。。。图片到3月23号显示出来。所以很大!

4 楼

算了,我还是发源代码吧!

我来回复

您尚未登录,请登录后再回复。点此登录或注册