python - 如何将布尔数组转换为字符串表示形式?
问题描述
我想像这样转换布尔值的imagehash数组:
array([[False, False, False, True, False, False, True, True],
[False, False, False, True, True, True, True, True],
[False, False, False, True, True, True, True, True],
[False, True, True, True, True, True, True, True],
[False, True, True, True, True, True, False, False],
[False, True, True, True, True, True, True, False],
[False, False, True, False, False, False, True, False],
[False, False, False, False, False, False, True, True]]))
对于使用 Python 2.7 的字符串表示形式94b1b9fcfcfcf0f0
,反之亦然。
我怎样才能做到这一点?
解决方案
以下代码将您的布尔值转换为 0/1 并从这些数字中获取十六进制值(8 个二进制数字最多可提供 2 个十六进制字符(从 00 到 ff)。zfill
如果数字小于 128,则用于填充左侧零.[2:]
去除十六进制表示 ( 0x
)。
hexstring = "".join([str(hex(int("{}".format("".join(["1" if elem else "0" for elem in line])), 2)))[2:].zfill(2) for line in array])
print(hexstring)
PS这个解决方案仅暗示纯Python -array
变量包含列表列表:
array = [
[False, False, False, True, False, False, True, True],
[False, False, False, True, True, True, True, True],
[False, False, False, True, True, True, True, True],
[False, True, True, True, True, True, True, True],
[False, True, True, True, True, True, False, False],
[False, True, True, True, True, True, True, False],
[False, False, True, False, False, False, True, False],
[False, False, False, False, False, False, True, True],
]
推荐阅读
- python - 哈希值是如何计算的?为什么每次运行脚本时对象的哈希值都会发生变化?
- python - 从源代码构建 Papagayo(Lip Sync Tool)的问题
- mysql - EntityFramework.dll 中的 ASP.NET MVC 'System.NullReferenceException'
- linux - org.openqa.selenium.SessionNotCreatedException:会话未在 centos 终端断开连接时创建
- python - 在 Pandas 数据框中设置小数点精度
- python - scikit-image color.rgb2gray 警告
- javascript - 在反应中从服务器下载并打开pkpass
- java - 从 InteliJ gradle 插件中读取目录
- dart - 捕获侦听器中抛出的异常
- php - 未找到“Kreait\Firebase\Factory”类