Python任一字元串轉16, 32, 64進位__Python

來源:互聯網
上載者:User
Python字串轉數字
    import binascii    s = 'test123456test'    str_16 = binascii.b2a_hex(s.encode('utf-8'))  # 字串轉16進位    print(str_16)    def baseN(num, b):        return ((num == 0) and "0") or \               (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])    num_10 = int(str_16, 16)  # 16進位轉10進位    print(num_10)    str_32 = baseN(num_10, 32)  # 10進位轉32進位    print(str_32)    num_10_2 = int(str_32, 32)  # 32進位轉10進位    print(num_10_2)    num_16 = hex(num_10)  # 10進位轉16進位數    print(num_16)    ss = str_16.decode('hex')  # 16進位串轉字串    print(ss)

執行結果

746573743132333435367465737423607972896813809817515175175422601q6asrk64p36d1l6pq6asrk23607972896813809817515175175422600x7465737431323334353674657374Ltest123456test
10進位轉n進位
def base10toN(num,n):    """Change a  to a base-n number.    Up to base-36 is supported without special notation."""    num_rep={10:'a',         11:'b',         12:'c',         13:'d',         14:'e',         15:'f',         16:'g',         17:'h',         18:'i',         19:'j',         20:'k',         21:'l',         22:'m',         23:'n',         24:'o',         25:'p',         26:'q',         27:'r',         28:'s',         29:'t',         30:'u',         31:'v',         32:'w',         33:'x',         34:'y',         35:'z'}    new_num_string=''    current=num    while current!=0:        remainder=current%n        if 36>remainder>9:            remainder_string=num_rep[remainder]        elif remainder>=36:            remainder_string='('+str(remainder)+')'        else:            remainder_string=str(remainder)        new_num_string=remainder_string+new_num_string        current=current/n    return new_num_string
進階版
   def baseN(num, b):       return ((num == 0) and "0") or \              (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
64進位
    def encode_b64(n):        table = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_'        result = []        temp = n        if 0 == temp:            result.append('0')        else:            while 0 < temp:                result.append(table[temp % 64])                temp /= 64        return ''.join([x for x in reversed(result)])    def decode_b64(str):        table = {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5,                 "6": 6, "7": 7, "8": 8, "9": 9,                 "a": 10, "b": 11, "c": 12, "d": 13, "e": 14, "f": 15, "g": 16,                 "h": 17, "i": 18, "j": 19, "k": 20, "l": 21, "m": 22, "n": 23,                 "o": 24, "p": 25, "q": 26, "r": 27, "s": 28, "t": 29, "u": 30,                 "v": 31, "w": 32, "x": 33, "y": 34, "z": 35,                 "A": 36, "B": 37, "C": 38, "D": 39, "E": 40, "F": 41, "G": 42,                 "H": 43, "I": 44, "J": 45, "K": 46, "L": 47, "M": 48, "N": 49,                 "O": 50, "P": 51, "Q": 52, "R": 53, "S": 54, "T": 55, "U": 56,                 "V": 57, "W": 58, "X": 59, "Y": 60, "Z": 61,                 "-": 62, "_": 63}        result = 0        for i in xrange(len(str)):            result *= 64            result += table[str[i]]        return result
Java字串轉數字
BigInteger integer = new BigInteger(hexString.toString(), 16);integer.toString(32);
import java.math.BigInteger;public class Main {  public static void main(String[] argv) throws Exception {    BigInteger bi = new BigInteger("1023");    bi = new BigInteger("1111111111", 2);     String s = bi.toString(2);     System.out.println(s);    bi = new BigInteger("1000", 8);    System.out.println(s = bi.toString(8));    bi = new BigInteger("1023");     s = bi.toString();     System.out.println(s);    bi = new BigInteger("3ff", 16);     s = bi.toString(16);     System.out.println(s);  }}
參考

1 python:整數轉換為任意進位
2 Python實現64進位和10進位的轉換

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.