新手来看:如何进行二进制到六十二进制向十进制的转换?
< language="javascript" type="text/javascript">
function addtitle(){
var straddtitle = "新手来看:如何进行二进制到六十二进制向十进制的转换?";
if (straddtitle.length!==0){
document.title=document.title + "《" + straddtitle + "》;专题号:71FAB61E13DCE8F3";
}
}
专题地址:http://access911.net/?kbid;71FAB61E13DCE8F3 |
简述:新手来看:如何进行二进制到六十二进制向十进制的转换?《函数》阅读前需掌握:熟练掌握 VBA 编程难度等级:< language="javascript" src="/rewrite.asp?mode=writelevel&l=70" type="text/javascript">
|
问题:
| 新手来看:如何进行二进制到六十二进制向十进制的转换?《函数》 如何进行2进制到62进制的转换? 10进制转16进制用 HEX 函数,那么倒过来哪? 十六进制转十进制用什么函数?
|
回答:
| 不需要函数,请参考以下代码:
Dim x As Double x = "&H" & "a1" Debug.Print x |
可以用以下函数:
Private Function C16To10(strA As String) As Double Dim a As Double Dim b As String Dim c As Double Dim l As Integer Dim i As Long l = Len(strA) For i = 1 To l b = Mid(strA, i, 1) Select Case b Case "A" b = 10 Case "B" b = 11 Case "C" b = 12 Case "D" b = 13 Case "E" b = 14 Case "F" b = 15 End Select c = c + b * 16 ^ (l - 1) l = l - 1 Next C16To10 = c Debug.Print C16To10 End Function |
编写了一个扩展函数,可以扩展到整个字符集
Function test() Debug.Print N10toC62(576, 35) Debug.Print C62ToN10("gg", 35) End Function Function C62ToN10(ByVal strA As String, Optional ByVal bt As Byte) As Double '本函数用于将 2 8 16 36 62 进制字符串转换为 10 进制数值 '请注意,本函数的输入参数是区分大小写的,36进制以及以下,应该全部转换为大写 '下列进制,如果有必要,可以扩展到整个字符集, '也就是你只要输入一个字符,就可以代表上万位 If bt < 2 Or bt > 62 Then bt = 16 '默认为 16 进制 End If '2进制 0-1 '8进制 0-7 可以用 clng("&O71") 代替 '16进制 0-9 A-F 可以用 clng("&Hf1") 代替 '36进制 0-9 A-Z '62进制 0-9 A-Z a-z '都不对,就用16进制,如果输入数据不符合要求,则出错 If bt <= 36 Then strA = UCase(strA) '小于等于 36 进值时应该全部转换为大写 End If Dim b As Long Dim b1 As String Dim c As Double Dim l As Integer Dim i As Integer l = Len(strA) For i = 1 To l b1 = Mid(strA, i, 1) Select Case Asc(b1) Case 48 To 57 b = CLng(b1) Case 65 To 90 b = Asc(b1) - 55 Case 97 To 122 b = Asc(b1) - 61 End Select c = c + b * bt ^ (l - 1) l = l - 1 Next C62ToN10 = c End Function Function N10toC62(ByVal b As Long, Optional ByVal bt As Byte) As String '以下函数将10进制数值根据要求转换为 '2 8 16 36 62 进制字符串 '请注意,本函数的输出结果是区分大小写的 If bt < 2 Or bt > 62 Then bt = 16 '默认为 16 进制 End If '2进制 0-1 '8进制 0-7 可以用 OCT 函数代替 '16进制 0-9 A-F 可以用 HEX 函数代替 '36进制 0-9 A-Z '62进制 0-9 A-Z a-z '都不对,就用16进制,如果输入数据不符合要求,则出错 Dim a As Long Dim a1 As String Dim s As String Do Until b = 0 a = b Mod bt Select Case a Case 0 To 9 a1 = CStr(a) Case 10 To 35 a1 = Chr(a + 55) Case 36 To 61 a1 = Chr(a + 61) End Select s = a1 & s b = b \ bt Loop N10toC62 = s End Function
|
|
|
发表于 @
2005年10月08日 00:31:00 | | 编辑|
举报| 收藏