【问题标题】:How to print little endian hex number of varying sizes?如何打印不同大小的小端十六进制数?
【发布时间】:2015-05-01 21:35:18
【问题描述】:

我正在尝试向文件写入一系列小端十六进制数字(填充零,并且没有“0x”前导)。

这些数字的大小由用户决定。这是我目前所拥有的:

file.write( format( struct.unpack( '<I', struct.pack( '>I', i ) ) [0], '08x' ))

其中 'i' 是 for 循环的当前迭代。

到目前为止,这仅打印 4 字节的数字,用 I 表示。如果用户定义大小,我该如何写数字?如果用户想要 6 字节,它应该写:

010000000000, 020000000000, etc

如果用户想要 2 字节,它应该写:

0100, 0200, etc

编辑:当我将“08x”更改为“012x”时,我得到:

0000000001000000

所以如果我想要一个 8 字节的数字,我不能只更改 '08x' 部分...

【问题讨论】:

    标签: python hex endianness


    【解决方案1】:

    不确定这是最好的方法,但它有效(如果我理解您的要求):

    def f(number, length):
        s = '{:0{}x}'.format(number, length*2)
        return ''.join(s[i-2:i] for i in range(len(s), 0, -2))
    
    for i in range(20):
        print(f(i, 6))
    

    输出:

    000000000000
    010000000000
    020000000000
    030000000000
    040000000000
    050000000000
    060000000000
    070000000000
    080000000000
    090000000000
    0a0000000000
    0b0000000000
    0c0000000000
    0d0000000000
    0e0000000000
    0f0000000000
    100000000000
    110000000000
    120000000000
    130000000000
    

    【讨论】:

    • 谢谢,暂时就这样吧~
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多