Closed. This question needs details or clarity 。它目前不接受答案。
想改善这个问题吗?添加细节并通过 editing this post 澄清问题。
7年前关闭。
Improve this question
我有一个长长的列表,看起来像这样:
在瓷砖 map 中表示墙壁。不能保证它是 4 的倍数,但它是否在最后被填充并不重要。
我想将其转换为十六进制字符串,因此对于上面的示例,它将以 E 开头 ...
我希望有一种很好的优雅方式来做到这一点(使用 Python 2.7.3)!
谢谢。
已编辑
这是 9x9 map 的示例:
我想要的是能够
这与以下内容相同:
想改善这个问题吗?添加细节并通过 editing this post 澄清问题。
7年前关闭。
Improve this question
我有一个长长的列表,看起来像这样:
[True, True, True, False, ... ]
在瓷砖 map 中表示墙壁。不能保证它是 4 的倍数,但它是否在最后被填充并不重要。
我想将其转换为十六进制字符串,因此对于上面的示例,它将以 E 开头 ...
我希望有一种很好的优雅方式来做到这一点(使用 Python 2.7.3)!
谢谢。
已编辑
这是 9x9 map 的示例:
map = [True, True, True, True,
True, True, True, True,
True, True, True, True,
True, False, False, True,
True, True, True, True,
True, False, False, False,
False, True, True, True,
True, True, False, False,
False, False, True, True,
True, True, True, True,
False, False, True, True,
True, True, True, True,
True, True, True, True,
True, True, True, True,
True, True, True, True,
True, True, True, True,
True, True, True, True,
True, True, True, True,
True, True, True, True,
True, True, True, True,
True]# False, False, False padded
我想要的是能够
str = heximify(map)
print str
> FFF9F87C3F3FFFFFFFFF8
最佳答案
加入单线俱乐部,通过位操作似乎更合适。
val = hex(reduce(lambda total, wall: total << 1 | wall, walls, 0))
这与以下内容相同:
val = 0
for wall in walls:
val <<= 1 # add one 0 bit at the "end"
val |= wall # set this bit to 1 if wall is True, otherwise leave it at 0
val = hex(val) # get a hex string in the end
val = format(val, 'x') # or without the leading 0x if it's undesired
关于python - 将列表转换为十六进制字符串的优雅方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17731822/
10-09 12:42