小编Mat*_*mke的帖子

Python字节文字的比较

出现了以下问题,因为我试图将bytes字符串用作字典键,而我理解为相等的字节值并未被视为相等.

为什么下面的python代码没有比较相同 - 不是这两个相同二进制数据的等价表示(为避免endianess而故意选择的例子)?

b'0b11111111' == b'0xff'
Run Code Online (Sandbox Code Playgroud)

我知道以下评估为真,证明了等价:

int(b'0b11111111', 2) == int(b'0xff', 16)
Run Code Online (Sandbox Code Playgroud)

但是为什么python强迫我知道代表?它与endian-ness有关吗?除了将它们全部转换为例如十六进制文字之外,还有一些简单的方法可以强制它们进行比较吗?任何人都可以建议一种透明而清晰的方法,以某种(某种程度上)平台无关的方式在所有表示之间移动(或者我要求的太多)?

编辑:

鉴于下面的评论,假设我想在表单中使用8位实际索引字典b'0b11111111',那么为什么python将其扩展为10个字节,我该如何防止这种情况?

这是一个较小的大型树数据结构,将我的索引扩展80倍似乎是对内存的巨大浪费.

python comparison byte base endianness

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

base ×1

byte ×1

comparison ×1

endianness ×1

python ×1