主题:[原创]进制转换工具
孙瑞
[专家分:590] 发布于 2010-12-29 13:42:00
这个是公共发布版,不含代码。因为这种程序对各位大大来讲小菜一碟,所以就不拿源代码献丑了,呵呵。提供给大家一个工具吧。貌似windows的计算器也支持进制转换,我后来才发现…………
【由我编辑于:2011年3月23日18:12:38】
最后更新于:2011-01-03 18:15:00
回复列表 (共4个回复)
沙发
一江秋水 [专家分:9680] 发布于 2010-12-30 10:57:00
不知道楼主为何把一个小小的程序弄成了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
板凳
wangmin0920 [专家分:0] 发布于 2010-12-31 15:12:00
因为没有让你自己选进制,所以比较大一点。
3 楼
孙瑞 [专家分:590] 发布于 2011-01-03 18:11:00
我这个主要是含有图片。。。图片到3月23号显示出来。所以很大!
4 楼
孙瑞 [专家分:590] 发布于 2011-01-03 18:12:00
算了,我还是发源代码吧!
我来回复