作者wait999 (-.-)
看板EzHotKey
标题[-AI-] base36 编码解码器(原始码)
时间Fri Oct 15 23:51:36 2010
此函数可以让使用者
10进位与36进位互转
例如: 10←→A , 35←→Z , 36←→10
详细介绍
http://en.wikipedia.org/wiki/Base_36
=====================================
#include <Array.au3>
MsgBox(0,"",base36_decoder("aabbbc"))
;//必须使用字串("")传入
MsgBox(0,"",base36_encoder("479927"))
;//使用数字或字串都行
Func base36_decoder($de)
Global $ff[36]
;//为了让函数可以独立使用
; 所以把编码表写在函数理
For $o = 0 to 35
if $o < 10 Then
$ff[$o] = ChrW($o+48)
Else
$ff[$o] = ChrW($o+87)
EndIf
Next
$ss = StringSplit($de,"")
$up = 0
for $fs = 1 to $ss[0]
$up = $up + _ArraySearch($ff,_ArrayPop( $ss))*(36^($fs-1))
;MsgBox(0,"",$up)
Next
Return $up
EndFunc
Func base36_encoder($de)
Global $ff[36]
Global $ss[1]
For $o = 0 to 35
if $o < 10 Then
$ff[$o] = ChrW($o+48)
Else
$ff[$o] = ChrW($o+87)
EndIf
Next
$ss[0] = 1
While( $de >36 )
$sde = Mod($de,36)
$de = Int( $de /36)
_ArrayAdd($ss, $ff[$sde])
$ss[0]= $ss[0] +1
WEnd
If $de < 36 Then
_ArrayAdd($ss, $ff[$de])
EndIf
Dim $up
For $fpp = UBound($ss) -1 to 1 Step -1
$up =$up & $ss[$fpp]
Next
Return $up
EndFunc
=================================================
※这次就不做GUI版本了,之前的文中载点好像也不见了,都有原始码就不补了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.242.1.193
※ 编辑: wait999 来自: 111.242.2.206 (12/05 19:21)