zoukankan      html  css  js  c++  java
  • c#将十进制转64进制


        //由于用于文件命名,所以将64位中的+转换为=,/转换为_
         static char[] digits = {  
            '0' , '1' , '2' , '3' , '4' , '5' ,  
            '6' , '7' , '8' , '9' , 'a' , 'b' ,  
            'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,  
            'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,  
            'o' , 'p' , 'q' , 'r' , 's' , 't' ,  
            'u' , 'v' , 'w' , 'x' , 'y' , 'z' ,  
            'A' , 'B' , 'C' , 'D' , 'E' , 'F' ,  
            'G' , 'H' , 'I' , 'J' , 'K' , 'L' ,  
            'M' , 'N' , 'O' , 'P' , 'Q' , 'R' ,  
            'S' , 'T' , 'U' , 'V' , 'W' , 'X' ,  
            'Y' , 'Z' , '=' , '_'  ,  
            };

        public static string to64(long number ,int shift) {
            
                 char[] buf = new char[64];  
            int charPos = 64;  
            int radix = 1 << shift;  
            long mask = radix - 1;  
            do {  
                buf[--charPos] = digits[(int)(number & mask)];  
                number = foo((int)number,shift);  
            } while (number != 0);  
            return new String(buf, charPos, (64 - charPos));  
        }

        public static int foo(int x, int y)
        {
            int mask = 0x7fffffff; //Integer.MAX_VALUE
            for (int i = 0; i < y; i++)
            {
                x >>= 1;
                x &= mask;
            }
            return x;
        }

  • 相关阅读:
    C#中的委托和事件的使用
    C#中Attribute/特性的使用
    Eclipase + CDT
    设计模式总结
    Nginx源码编译
    Nginx自定义扩展模块
    电池的寿命
    大盗阿福
    河中跳房子
    An Easy Problem
  • 原文地址:https://www.cnblogs.com/Impulse/p/3723713.html
Copyright © 2011-2022 走看看