【问题标题】:display an octal value as its string representation将八进制值显示为其字符串表示形式
【发布时间】:2015-07-21 12:29:45
【问题描述】:

将八进制数转换为字符串时遇到问题。

p = 01212
k = str(p)
print k

结果是650,但我需要01212。我怎样才能做到这一点?提前致谢。

【问题讨论】:

    标签: python format octal


    【解决方案1】:

    您的号码p 是实际的,而不是该值的表示。所以实际上是650<sub>10</sub>1212<sub>8</sub>28a<sub>16</sub>都是同时出现的。

    如果您想将其视为八进制,只需使用:

    print oct(p)
    

    根据以下成绩单:

    >>> p = 01212
    >>> print p
    650
    >>> print oct(p)
    01212
    

    这适用于 Python 2(您似乎正在使用它,因为您使用八进制文字的 0NNN 变体而不是 0oNNN)。

    Python 3 的表示方式略有不同:

    >>> p = 0o1212
    >>> print (p)
    650
    >>> print (oct(p))
    0o1212
    

    【讨论】:

    • 在python3中略有修改
    • @Ajay,添加了 Py3 的东西,尽管我相信 OP 仍在使用 Py2。还是很高兴知道。
    【解决方案2】:

    一种方法是使用Format Mini Specification Language 中的o 格式字符:

    示例:

    >>> x = 01212
    >>> print "0{0:o}".format(x)
    01212
    

    'o' 八进制格式。输出以 8 为底的数字。

    注意:您仍然必须在前面加上 0除非您使用内置函数 oct())。

    更新:如果您使用的是 Python 3+:

    $ python3.4
    Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
    [GCC 4.8.2] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> x = 01212
      File "<stdin>", line 1
        x = 01212
                ^
    SyntaxError: invalid token
    >>> x = 0o1212
    >>> print(oct(x))
    0o1212
    >>> print("0o{0:o}".format(x))
    0o1212
    

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 2021-11-21
      • 2021-02-12
      • 2013-11-26
      • 1970-01-01
      • 2012-08-02
      • 2015-04-23
      • 2014-12-05
      • 2011-03-27
      相关资源
      最近更新 更多