大家好!
急求10进制转33进制代码。
就是我想在EXCLE中使用宏建一个自定义函数“tenTO33”
33进制规则是:0、1、2、3、4、5、6、7、8、9、A、C、D、E、F、G、H、J、K、L、M、N、P、Q、R、S、T、V、W、X、Y、Z、10 字母:I、O、U不用,其余正常流水。下面是代码,但会出现重码现象(例如:十进制中66和2178算出的33进制结果都是20),请大家看看哪里出问题了,非常感谢!!!Function tenTo33(x As Long) As String
Dim i As Integer
Dim tmp As Long
tmp = x
Dim xStr(0 To 32) As String
For i = 0 To 9
xStr(i) = i
Next i
For i = 10 To 17
xStr(i) = Chr(i + 55)
Next i
For i = 18 To 22
xStr(i) = Chr(i + 56)
Next i
For i = 23 To 27
xStr(i) = Chr(i + 57)
Next i
For i = 28 To 32
xStr(i) = Chr(i + 58)
Next i
For i = 10 To 1 Step -1
If Int(tmp / 33 ^ i) > 0 Then
tenTo33 = tenTo33 & xStr(Int(tmp / 33 ^ i))
tmp = tmp - Int(tmp / 33 ^ i) * 33 ^ i
End If
Next i
tenTo33 = tenTo33 & xStr(tmp)
End Function
急求10进制转33进制代码。
就是我想在EXCLE中使用宏建一个自定义函数“tenTO33”
33进制规则是:0、1、2、3、4、5、6、7、8、9、A、C、D、E、F、G、H、J、K、L、M、N、P、Q、R、S、T、V、W、X、Y、Z、10 字母:I、O、U不用,其余正常流水。下面是代码,但会出现重码现象(例如:十进制中66和2178算出的33进制结果都是20),请大家看看哪里出问题了,非常感谢!!!Function tenTo33(x As Long) As String
Dim i As Integer
Dim tmp As Long
tmp = x
Dim xStr(0 To 32) As String
For i = 0 To 9
xStr(i) = i
Next i
For i = 10 To 17
xStr(i) = Chr(i + 55)
Next i
For i = 18 To 22
xStr(i) = Chr(i + 56)
Next i
For i = 23 To 27
xStr(i) = Chr(i + 57)
Next i
For i = 28 To 32
xStr(i) = Chr(i + 58)
Next i
For i = 10 To 1 Step -1
If Int(tmp / 33 ^ i) > 0 Then
tenTo33 = tenTo33 & xStr(Int(tmp / 33 ^ i))
tmp = tmp - Int(tmp / 33 ^ i) * 33 ^ i
End If
Next i
tenTo33 = tenTo33 & xStr(tmp)
End Function
解决方案 »
- 遗传算法四大例题
- 深夜万分紧急问题:delphi7做如下类似的表格循环显示
- 如何用delphi控制excel,生成表"sheet1"的副本,并排在sheet1后面?
- delphi(自学)新手!!高手请指教如何快速的高效率的学习delphi??谢谢!!!谢谢!!!!
- 请问如何在Delphi中实现像C/C++那样的">>"、"<<"位移操作?
- 动态库中使用IdUDPServer的OnUDPRead事件时为何无效?
- 与十个单片机(下位机)通讯的问题,内有详细说明,解决问题立即给分
- 如何获得汉字的内码!!
- 菜鸟的弹出菜单
- 有关BDE Administrator 的问题
- DelForExp vs Code Formatter
- 紧急求救!!! 关于 DbGridEh 打印序号的问题
For i = 0 To 9
xStr(i) = i
....
改为:
For i = 0 To 9
xStr(i) = char(i+48)
Dim i As Integer
Dim tmp As Long
Dim start As Boolean
tmp = x
Dim xStr(0 To 32) As String
For i = 0 To 32
Select Case i
Case 0 To 9: xStr(i) = Chr(i + 48)
Case 10 To 17: xStr(i) = Chr(i + 55)
Case 18 To 22: xStr(i) = Chr(i + 56)
Case 23 To 27: xStr(i) = Chr(i + 57)
Case 28 To 32: xStr(i) = Chr(i + 58)
End Select
Next i
For i = 10 To 1 Step -1
If Int(tmp / 33 ^ i) > 0 Then
start = True
End If
If start Then
tenTo33 = tenTo33 & xStr(Int(tmp / 33 ^ i))
If Int(tmp / 33 ^ i) > 0 Then
tmp = tmp - Int(tmp / 33 ^ i) * 33 ^ i
End If
End If
Next i
tenTo33 = tenTo33 & xStr(tmp)
End Function
const arr: string ='0123456789ACDEFGHJKLMNPQRSTVWXYZ';function num33(n:integer) :char;
begin
num33:=arr[n];
end;