• Python3的内置函chr和ord及进制转换,format


    python的内置函数中,有一对函数:chr 和 ord,有着相反的功能。

    1. chr(x):用一个数值作参数,返回一个对应的unicode字符,该参数的有效范围是从0到1114111(16进制时为0x10FFFF),参数可以是十进制,也可以是十六进制。

    print(chr(105))  # ---> i
    print(chr(0x9980))  # ---> 汉字:馀
    print(chr(0x0030))  # ---> 0
    print(chr(8364))    # ---> €
    
    print(chr(127137)) # ---> 扑克:A
    print(chr(44032))  # ---> 韩语:가
    print(chr(126976)) # --->麻将:东

    2. ord(x):chr(x)的反向函数,通过一个Unicode字符,返回其对应的数值。

    print(ord('0'))  # ---> 48(十进制):其十六进制为 0x0030
    print(ord('i'))  # ---> 105(十进制)

     3. 其中,进制转换,主要有以下几种方式

    • 十六进制、二进制、八进制转十进制,注意:二进制表示中每一位只能是0或1表示,八进制中每一位只能在0-7之间,同理十六进制中的每一位在0-f之间,超出范围会报错。
    print(int('10',2))  #二进制转十进制,int('20',2) 会报错
    print(int('30',8))  #八进制转十进制,int('80',8) 会报错
    print(int('f0',16)) #十六进制转十进制,int('g0',16) 会报错
    
    # 下面的方式也可
    print(int('0b10',2)) #二进制转十进制
    print(int('0o30',8)) #八进制转十进制
    print(int('0xf0',16)) #十六进制转十进制
    • 十进制转二进制、八进制、十六进制,内置函数bin、oct、hex得到的进制前面会分别带有'0b','0o','0x'字符。
    print(bin(15))  # 十进制转二进制
    print(oct(15))  # 十进制转八进制
    print(hex(482)) # 十进制转十六进制
    • 或者
    print(format(482,"x")) # 十进制转十六进制
    print(format(15,"o"))  # 十进制转八进制
    print(format(15,"b"))  # 十进制转二进制

    4. format进制转换,b,o,d,x 分别表示 二进制、八进制、十进制、十六进制

    • 十六进制转二进制、八进制、十进制
    # format进制转换
    print('{:b}'.format(0xef))  #十六进制转二进制:11101111
    print('{:o}'.format(0xef))  #十六进制转八进制:357
    print('{:d}'.format(0xef))  #十六进制转十进制:239
    
    #格式化中加'#'表示加入标识
    print('{:#b}'.format(0xef))  #十六进制转二进制:0b11101111,加标识 0b
    print('{:#o}'.format(0xef))  #十六进制转八进制:0o357,加标识 0o
    print('{:#d}'.format(0xef))  #十六进制转十进制:239,十进制不变
    • 八进制、十进制转二进制
    print('{:b}'.format(0o357))  #八进制转二进制:11101111
    print('{:b}'.format(239))    #十进制转二进制:11101111
    print('{:#b}'.format(0o357))  #八进制转二进制:0b11101111,加标识 0b
    print('{:#b}'.format(239))    #十进制转二进制:0b11101111,加标识 0b
    • 十进制、八进制、二进制转十六进制
    #
    print('{:x}'.format(239))    #十进制转十六进制:ef
    print('{:x}'.format(0b11101111)) #二进制转十六进制:ef
    print('{:x}'.format(0o357)) #八进制转十六进制:ef
    
    #
    print('{:#x}'.format(239))    #十进制转十六进制:0xef,加标识 0x
    print('{:#x}'.format(0b11101111)) #二进制转十六进制:0xef,加标识 0x
    print('{:#x}'.format(0o357)) #八进制转十六进制:0xef,加标识 0x

    八进制以 '0o开头',二进制以 '0b' 开头,十六进制以 '0x' 开头

    注:

    正好了解一下unicode字符集,Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等,是可以容纳世界上所有文字和符号的字符编码方案,比ASCII码能表示的范围大得多。

    其中包括的种类可以自行搜索,每个种类在各自的区间范围内,有趣的字符很多,参考知乎大佬的操作,可以发现:

    • 象形文字
    • 楔形文字
    • 八卦
    • 太极图案
    • 易经64卦:范围是[0x4DC0, 0x4DFF],十进制是[19904, 19967],共64个
    • 扑克牌:范围是[0x1f0a0, 0x1f0df],十进制是[127136, 127199],共64个
    • 麻将:[126976, 127009]是34张正常牌,例如东南西北中发白、筒子等,接下来8张[127010, 127017]属于春、夏、秋、冬,梅、兰、竹、菊
    • 小图标
    • 汉字:常用汉字[19968, 40917],十六进制是[0x4E00, 0x9FD5];还有其他汉字在其他区域
    • 韩文:[44032, 55203]
    • 阿拉伯文、希腊文、日文、朝鲜文、泰文、缅甸文、蒙古文、藏文、拉丁文......
    • 盲文
    • 数学运算符:[0x2200-0x22FF]
    • 箭头
    • 货币
    • 标点等

    ##

    参考:

    https://baike.baidu.com/item/Unicode/750500

    https://blog.csdn.net/qq_29720657/article/details/102761356

    https://blog.csdn.net/qq_29720657/article/details/102843291

    https://www.zhihu.com/question/30873035/answer/995167936?utm_source=wechat_timeline

    https://www.cnblogs.com/andy9468/p/11654091.html

  • 相关阅读:
    Web测试与App测试的区别-总结篇
    Shell之基本用法
    Samba服务部署
    Linux基础(3)
    linux基础(2)
    linux基础(2)
    Linux基础(1)
    网络基础及网络协议
    操作系统简介
    计算机基础重要性
  • 原文地址:https://www.cnblogs.com/qi-yuan-008/p/12762444.html
Copyright © 2020-2023  润新知