【问题标题】:Python array conversion, decimal to hexPython数组转换,十进制到十六进制
【发布时间】:2015-05-16 12:16:07
【问题描述】:

如何将我的 dec_array(例如 dec-array = 50、123、175、13)更改为 hex_array(32、7B、AF、OA)? hex() 函数仅适用于单个字符。

【问题讨论】:

  • hex() 函数仅适用于单个字符。 - 嗯?
  • 请用语法正确的 Python 编写您的输入和输出,这样我们就知道您真正想要什么。并说出输入中可以包含哪些数字。负面的?非整数?
  • 我现在有......
  • 正整数仅在 dec 数组中 & hex_array=[hex(x)[2:] for x in dec_array]
  • print dec_array 给出 [80, 66, 67, 86, 53, 49, 46, 48, 123, 175, 13] 和 print hex_array 给出 ['50', '42', '43' , '56', '35', '31', '2e', '30', '7b', 'af', 'd'] 但我想要 [50, 40, 43, 56, 35, 31, 2E、30、7B、AF、0D]

标签: python arrays hex decimal


【解决方案1】:

使用列表推导可能是最简单的方法:

hex_array = [hex(x) for x in dec_array]

如果你想删除每个元素开头的0x

hex_array = [hex(x)[2:] for x in dec_array]

【讨论】:

  • 如果x 是负数怎么办?
  • 嘿,效果很好,为什么每个十六进制值都用单引号括起来?
  • [80, 66, 67, 86, 53, 49, 46, 48, 123, 175, 13] ['50', '42', '43', '56', '35 '、'31'、'2e'、'30'、'7b'、'af'、'd']
【解决方案2】:

或者使用 hex ,它必须有效。

>>> d = 30
>>> hex(d).split('x')[1]
'1e'

对于否定我找到了这个解决方案

def tohex(val):
  return hex((val + (1 << 64)) % (1 << 64)).split('x')[1]

【讨论】: