十进制和36进制之间的转换

十进制和36进制之间的转换,第1张

/**

*十进制长整型变量转换36进制字符串

*

*@paramdecimal 10进制长整型

*

*@return36进制字符串

*/

+ (NSString*)decimal2ThirtySix:(unsignedlonglong)decimal

{

NSMutableString* dd = [NSMutableStringstring]

NSString* parma =@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

unsignedlonglongi = decimal

while(i>0){

intc = i%36

i = i/36

charcc = [parmacharacterAtIndex:c]

[ddinsertString:[NSStringstringWithFormat:@"%c",cc]atIndex:0]

}

returndd

}

/**

*  36进制字符串转换10进制长整型变量

*

*@paramthirtySixStr 36进制字符串

*

*@return10进制长整型变量

*/

+ (unsignedlonglong)thirtySix2Decimal:(NSString*)thirtySixStr{

NSString*str36 = [thirtySixStrcopy]

unsignedlonglongcou=0

unsignedlonglength = [str36length]

for(unsignedlongj = length j>0j--) {

charc = [str36characterAtIndex:j-1]

if(c>='0'&&c<='9'){

cou = cou+(c-'0')*pow(36,(length-j))

}elseif(c>='a'&&c<='z'){

cou = cou+(c-'a'+10)*pow(36,(length-j))

}

}

returncou

}

用 VBA 自定义函数解决(调用:B1 = Dec2Base36(A1))

Function Dec2Base36(rg As Integer) As String

    jz = 36

    rt = ""

    If rg < jz Then

        rt = num2str(rg)

    Else

        tg = rg

        While tg >= jz

            zc = Int(tg / jz)

            ys = tg - zc * jz

            rt = num2str(ys) & rt

            tg = zc

        Wend

        rt = num2str(tg) & rt

    End If

    Dec2Base36 = rt

End Function

Function num2str(n) As String

    If n > 9 Then

        n = n + 55

        rt = Chr(n)

    Else

        rt = n

    End If

    num2str = rt

End Function


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/9030089.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-24
下一篇2023-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存