【问题标题】:hexadecimal array to binary array十六进制数组转二进制数组
【发布时间】:2018-10-24 13:29:08
【问题描述】:

我想转换这个十六进制数组:

[7,3,2,0,1,9,0,4]

进入这个

[0,1,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,1,0,0]

您可以识别的前 4 个整数等于二进制格式的 7 (0111),依此类推。

我尝试使用format(x, '04b'),但结果是字符串格式:

['0111','0011','0010','0000','0001','1001','0000','0100']

因此,我不能将结果用作二进制数组。该怎么做?

【问题讨论】:

  • 一种方法是list(map(int,list(''.join(a)))),其中a 是您当前的结果,但看起来有点难看。
  • 其实我的第一种方法可以缩短为list(map(int,''.join(a)))
  • 是什么让[7,3,2,0,1,9,0,4] 成为十六进制数组?看起来它只包含十进制整数。
  • @usr2564301:我知道。我在问 OP 为什么称它为十六进制数组。
  • @usr2564301:我相信计算机中的所有整数都是二进制的。在我看来,OP 问题中的内容是它们的“数组”的十进制表示。不聊这个话题了,无聊。

标签: python binary hex


【解决方案1】:

这一行将根据需要返回一个整数列表:

hex = [7,3,2,0,1,9,0,4]
list(map(int,"".join([format(x, '04b') for x in hex])))

【讨论】:

    【解决方案2】:

    您可以使用按位运算:

    h = [7,3,2,0,1,9,0,4]
    [i >> b & 1 for i in h for b in range(3, -1, -1)]
    

    这会返回:

    [0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0]
    

    【讨论】:

      【解决方案3】:
      arr = [7,3,2,0,1,9,0,4]
      
      hexa = ''.join(str(e) for e in arr)
      
      print(bin(int(hexa,16))[2:])
      

      这需要一个十六进制数组并将其转换为二进制!

      【讨论】:

      • 你把 print 换成 x = 然后用 x.split() 把它分成一个数组
      • 但是它返回一个字符串,并且 OP 想要一个整数列表。