• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.2.9
软件大小:62.5M
更新时间:12-07

按键精灵iOS版
立即下载

软件版本:1.3.1
软件大小:29.2M
更新时间:09-29

按键精灵Mac版
立即下载

软件版本:1.1.0
软件大小:12.3M
更新时间:12-29

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
发新话题 回复该主题

[源码分享] 任意进制转任意进制菜鸟版 [复制链接]

1#
我是一名菜鸟,按键的灵魂是图色,重要的是中文和中文。

使用方法:
任意进制转十进制:
dim 被转换进制,被转换数据,转换好的
被转换进制=16
被转换数据=a1
转换好的=任意进制转十进制(被转换进制,被转换数据)
TracePrint 转换好的
十进制转任意进制:
dim 转换数据,输出进制,保留小数位数
转换数据=100000
输出进制=16
保留小数位数=3
转换好的=十进制转任意进制(转换数据,输出进制,保留小数位数)
TracePrint 转换好的
Function 任意进制转十进制(进制, 转换数据)
//进制转换码值不超过26字母皆可转换,超过请自行补码
If IsNumeric(转换数据) = True Then 转换数据 = CStr(转换数据)
Dim 位值,权值,真值,整数=转换数据,余数="0",整数组合值,余数组合值,单码位置
Dim 码表="abcdefghijklmnopqrstuvwxyz"
转换数据 = LCase(转换数据)
Dim 小数位值=InStr(1,转换数据,".")
If 小数位值 > 0 Then
整数 = Mid(转换数据, 1, 小数位值 - 1)
余数 = Mid(转换数据, 小数位值 + 1, Len(转换数据) - 小数位值)
End If
Dim 整数长度=Len(整数),余数长度=Len(余数)
For a = 1 To 整数长度
位值 = Mid(整数, a, 1)
单码位置 = InStr(1, 码表, 位值)
If 单码位置 > 0 Then
位值 = 单码位置 + 9
Else
位值=CInt(位值)
End If
If 位值 > 进制 - 1 Then
任意进制转十进制="错误!非"&进制&"数据|原因:"&Mid(余数, a, 1)&"在转换过程不符合进制数!"
Exit Function
End If
权值 = 整数长度 - a
真值 = 位值 * 进制 ^ 权值
整数组合值 = 整数组合值 + 真值
Next
位值 = ""
单码位置=""
权值=""
真值=""
If 余数 <> "0" Then
For b = 1 To 余数长度
位值 = Mid(余数, b, 1)
单码位置 = InStr(1, 码表, 位值)
If 单码位置 > 0 Then
位值 = 单码位置 + 9
Else
位值=CInt(位值)
End If
If 位值 > 进制 - 1 Then
任意进制转十进制 = "错误!非" & 进制 & "进制|原因:""" & Mid(余数, b, 1) & """不符合参数进制!"
Exit Function
End If
权值 = -b
真值 = 位值 * 进制 ^ 权值
余数组合值 = 余数组合值 + 真值
Next
End If
任意进制转十进制 = 整数组合值 + 余数组合值
End Function
Function 十进制转任意进制(转换数据,输出进制,保留小数位数)
Dim 商值,二余数,结果,整数=转换数据,余数="0",位值
Dim 码表="abcdefghijklmnopqrstuvwxyz"
Dim 小数位值=InStr(1,转换数据,".")
If 小数位值 > 0 Then
整数 = Mid(转换数据, 1, 小数位值 - 1)
余数 = Mid(转换数据, 小数位值 + 1, Len(转换数据) - 小数位值)
余数 = CDbl("0." & 余数)
End If
整数 = CInt(整数)
Do
商值 = 整数 / 输出进制
If 商值 > 0 Then
二余数 = 整数 Mod 输出进制
整数 = Fix(商值)
If 二余数 >= 10 Then
二余数 = Mid(码表, 二余数 - 9, 1)
End If
结果 = 结果 & 二余数
Else
Exit Do
End If
Loop
Dim 转换小数="",整商值,商值小数,字符商值,字符余数,字符整商值
If 余数 <> "0" Then
Do
商值 = 余数 * 输出进制
字符商值=Cstr(商值)
商值小数=InStr(1,字符商值,".")
If 商值小数 > 0 Then
字符整商值 = Mid(字符商值, 1, 商值小数 - 1)
转换小数 = 转换小数 & 字符整商值
字符余数 = "0." & Mid(字符商值, 商值小数 + 1, Len(字符商值) - 商值小数)
余数 = CDbl(字符余数)
Else
转换小数 = "." & 转换小数
Exit Do
End If
If Len(转换小数) > 保留小数位数 Then
转换小数 = "." & 转换小数
Exit Do
End If
Loop
End If
十进制转任意进制 = UTF8.StrReverse(结果) & 转换小数
End Function

哇哈哈的情怀
2#

学习一下,竟然还有小数位。

3#

学习一下,竟然还有小数位。

熊家班熊叫兽
发新话题 回复该主题