【问题标题】:Python string manipulation. Adding a character to the fifth placePython 字符串操作。在第五位添加一个字符
【发布时间】:2012-06-30 13:49:18
【问题描述】:

我认为表达我的问题的最佳方式是举一个例子:

我有一个十六进制数字,比如2f。我想把这个十六进制数放在第五位,然后是零。所以在这种情况下,我想要9002f。从这里我将把它转换回十进制。

我认为最好的方法是使用列表并拥有一个 ['9','0','0','0','0'] 列表和一个 ['2','f'] 列表,并以某种方式覆盖到 9000 列表。

你们觉得呢?

【问题讨论】:

    标签: python string list hex


    【解决方案1】:

    做你想做的事

    def fillhex(h, n, pos):
        return n+h.zfill(pos-len(n))
    

    .

    fillhex('2f', '9', 5)
    9002f
    
    fillhex('4A', '9', 5)
    9004A
    
    fillhex('F', '9', 5)
    9000F
    

    尽管@NedBatchelder 在他的回答中显示,有更简单的方法可以在数字基数之间进行转换。

    【讨论】:

    • 如果数字已经是字符串形式,转换为 int 可能会慢一些,做个数学然后再做一个字符串。
    【解决方案2】:

    有趣的要求,但这适用于可变职位:

    >>> def place_n(a, b, pos):
        return '{0}{1:0>{2}}'.format(a, b, pos - len(a))
    
    >>> place_n('9', '2f', 5)
    '9002f'
    

    【讨论】:

      【解决方案3】:

      为什么要进行字符串操作?听起来你想用十六进制数字做数学:

      h = '2f'
      h_int = int(h, 16)
      h_int += 0x90000
      

      如果确实需要获取字符串,可以再转回字符串:

      "%x" % h_int
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-09
        • 2012-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        相关资源
        最近更新 更多