有没有办法填充偶数个数字?

Nan*_*n L 8 python string padding

我正在尝试创建一些需要传输的数据的十六进制表示(具体来说,在ASN.1表示法中).在某些时候,我需要将数据转换为十六进制表示.由于数据是作为字节序列传输的,如果长度为奇数,则必须用0填充十六进制表示.

例:

>>> hex2(3)
'03'
>>> hex2(45)
'2d'
>>> hex2(678)
'02a6'
Run Code Online (Sandbox Code Playgroud)

目标是找到一个简单,优雅的实现hex2.

目前我正在使用hex,剥离前两个字符,然后填充字符串,0如果它的长度是奇数.但是,我想找到一个更好的解决方案,以备将来参考.我str.format没有找到任何可以填充多个的东西.

Ign*_*ams 7

def hex2(n):
  x = '%x' % (n,)
  return ('0' * (len(x) % 2)) + x
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 7

说实话,我不确定问题是什么.直接实现您描述的内容如下:

def hex2(v):
  s = hex(v)[2:]
  return s if len(s) % 2 == 0 else '0' + s
Run Code Online (Sandbox Code Playgroud)

我不一定称之为"优雅",但我当然称之为"简单".