首页 > 解决方案 > 字节(“s”,“utf-8”)>字节(10000)==真

问题描述

bytes("string")bytes(number)

In [212]: bytes("s","utf-8") > bytes(10000)
Out[212]: True

我尽力理解它:

In [219]: bytes("s", "utf-8"), len(bytes("s", "utf-8"))
Out[219]: (b's', 1)

In [220]: len(bytes(10**))
Out[220]: 100004

占用 1000 个字节的数字 10^4 小于“s”占用一个字节。

我怎么能直观地理解它?

标签: pythonpython-3.x

解决方案


字节按字典顺序排列,如字符串、列表或元组。所以首先比较前导元素,然后比较接下来的两个,依此类推,直到一个或两个字节串结束。所以

bytes("s", "utf-8") > bytes("r", "utf-8")
# True

bytes("s", "utf-8") > bytes("t", "utf-8")
# False

由于bytes(10000)使一个bytes完整的0s,任何bytes包含非零字节的字节都将大于它,就像所有as 中的一个单词在字典中将比包含任何其他字符的单词更早出现一样。


推荐阅读