【问题标题】:Error trying to strip "0x'尝试剥离“0x”时出错
【发布时间】:2014-05-03 10:15:17
【问题描述】:

我正在尝试使用下面的代码从十六进制值中删除“0x”并遇到错误,有人可以建议如何解决它吗?

   with open(r'\\Network\files\build_ver.txt','r+') as f:
        value = int(f.read(), 16)
        f.seek(0)
        write_value = hex(value + 1)
        final_value = format(write_value, 'x')
        f.write(final_value)

错误:-

Traceback (most recent call last):
  File "build_ver.py", line 5, in <module>
    final_value = format(write_value, 'x')
ValueError: Unknown format code 'x' for object of type 'str'

【问题讨论】:

    标签: python


    【解决方案1】:

    hex 内置返回一个字符串值:

    >>> hex(123)
    '0x7b'
    >>> type(hex(123))
    <class 'str'>
    >>>
    

    但是format 期望一个十六进制值作为它的第一个参数:

    >>> format('0x7b', 'x')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: Unknown format code 'x' for object of type 'str'
    >>>
    >>> format(0x7b, 'x')
    '7b'
    >>>
    

    因此,它不能在这里使用。相反,您可以通过切片去除0x

    with open(r'\\Network\files\build_ver.txt','r+') as f:
        value = int(f.read(), 16)
        f.seek(0)
        write_value = hex(value + 1)[2:]
        f.write(write_value)
    

    [2:] 将获取字符串中除前两个字符之外的每个字符。请看下面的演示:

    >>> hex(123)
    '0x7b'
    >>> hex(123)[2:]
    '7b'
    >>>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2020-07-07
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多