Weibw's World Weibw's World
首页
  • HTML
  • Python

    • Python基础知识
    • Python CookBook第三版
    • Flask
  • MySQL

    • MySQL基础知识
    • MySQL调优
    • MySQL面试题
算法
  • FineReport
  • Kettle
  • Git
  • 微信公众号文章
  • 优秀博客文章
  • 其他
收藏夹
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Weibw

一个没有梦想的咸鱼
首页
  • HTML
  • Python

    • Python基础知识
    • Python CookBook第三版
    • Flask
  • MySQL

    • MySQL基础知识
    • MySQL调优
    • MySQL面试题
算法
  • FineReport
  • Kettle
  • Git
  • 微信公众号文章
  • 优秀博客文章
  • 其他
收藏夹
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 《Flask》

  • 《Python Cookbook》第三版

    • 第一章:数据结构与算法

    • 第二章:字符串和文本

    • 第三章:数字日期和时间

      • 数字的四舍五入
      • 执行精确的浮点数运算
      • 数字的格式化输出
      • 二八十六进制整数
        • 字节到大整数的打包与解包
        • 复数的数学运算
        • 无穷大与 NaN
        • 分数运算
        • 大型数组运算
        • 矩阵与线性代数运算
        • 随机选择
        • 基本的日期与时间转换
        • 计算上一个周五的日期
        • 计算当前月份的日期范围
        • 字符串转换为日期
        • 结合时区的日期操作
      • 第四章:迭代器与生成器

      • 第五章:文件与IO

      • 第六章:数据编码和处理

      • 第七章:函数

      • 第八章:类与对象

      • 第九章:元编程

      • 第十章:模块与包

      • 第十一章:网络与Web编程

      • 第十二章:并发编程

      • 第十三章:脚本编程与系统管理

      • 第十四章:测试、调试和异常

      • 第十五章:C语言扩展

    • Python基础

    • Python
    • 《Python Cookbook》第三版
    • 第三章:数字日期和时间
    weibw
    2022-01-06

    二八十六进制整数

    # 问题

    你需要转换或者输出使用二进制,八进制或十六进制表示的整数。

    # 解决方案

    为了将整数转换为二进制、八进制或十六进制的文本串,可以分别使用 bin() ,oct() 或 hex() 函数:

    >>> x = 1234
    >>> bin(x)
    '0b10011010010'
    >>> oct(x)
    '0o2322'
    >>> hex(x)
    '0x4d2'
    >>>
    
    1
    2
    3
    4
    5
    6
    7
    8

    另外,如果你不想输出 0b , 0o 或者 0x 的前缀的话,可以使用 format() 函数。比如:

    >>> format(x, 'b')
    '10011010010'
    >>> format(x, 'o')
    '2322'
    >>> format(x, 'x')
    '4d2'
    >>>
    
    1
    2
    3
    4
    5
    6
    7

    整数是有符号的,所以如果你在处理负数的话,输出结果会包含一个负号。比如:

    >>> x = -1234
    >>> format(x, 'b')
    '-10011010010'
    >>> format(x, 'x')
    '-4d2'
    >>>
    
    1
    2
    3
    4
    5
    6

    如果你想产生一个无符号值,你需要增加一个指示最大位长度的值。比如为了显示32 位的值,可以像下面这样写:

    >>> x = -1234
    >>> format(2**32 + x, 'b')
    '11111111111111111111101100101110'
    >>> format(2**32 + x, 'x')
    'fffffb2e'
    >>>
    
    1
    2
    3
    4
    5
    6

    为了以不同的进制转换整数字符串,简单的使用带有进制的 int() 函数即可:

    >>> int('4d2', 16)
    1234
    >>> int('10011010010', 2)
    1234
    >>>
    
    1
    2
    3
    4
    5

    # 讨论

    大多数情况下处理二进制、八进制和十六进制整数是很简单的。只要记住这些转换属于整数和其对应的文本表示之间的转换即可。永远只有一种整数类型。

    最后,使用八进制的程序员有一点需要注意下。Python 指定八进制数的语法跟其他语言稍有不同。比如,如果你像下面这样指定八进制,会出现语法错误:

    >>> import os
    >>> os.chmod('script.py', 0755)
    File "<stdin>", line 1
    os.chmod('script.py', 0755)
    ^
    SyntaxError: invalid token
    >>>
    
    1
    2
    3
    4
    5
    6
    7

    需确保八进制数的前缀是 0o ,就像下面这样:

    >>> os.chmod('script.py', 0o755)
    >>>
    
    1
    2
    编辑 (opens new window)
    上次更新: 2023/10/13, 17:39:25
    数字的格式化输出
    字节到大整数的打包与解包

    ← 数字的格式化输出 字节到大整数的打包与解包→

    最近更新
    01
    牛客网非技术快速入门SQL练习题
    03-08
    02
    其他日常SQL题
    03-07
    03
    用户与权限管理
    03-05
    更多文章>
    Theme by Vdoing | Copyright © 2021-2023 | Weibw | 辽ICP备18015889号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式