python - 字节(“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”占用一个字节。
我怎么能直观地理解它?
解决方案
字节按字典顺序排列,如字符串、列表或元组。所以首先比较前导元素,然后比较接下来的两个,依此类推,直到一个或两个字节串结束。所以
bytes("s", "utf-8") > bytes("r", "utf-8")
# True
bytes("s", "utf-8") > bytes("t", "utf-8")
# False
由于bytes(10000)
使一个bytes
完整的0
s,任何bytes
包含非零字节的字节都将大于它,就像所有a
s 中的一个单词在字典中将比包含任何其他字符的单词更早出现一样。
推荐阅读
- assembly - 如何从程序集中调用scanf?
- cryptography - 如何通过 Ballerina 中的字符串/文件创建加密:PublicKey 记录
- html - Angular POST 请求中的错误处理
- html - 如何使用 CSS 使导航栏链接在关闭时不变形?
- dart - Dart:为错误处理制作可重用的 try catch 块
- java - 在哪里可以找到我在 Java 中导入的包的源代码?
- python - 无法将具有 784 个元素的张量重塑为 [1,224,224](50176 个元素)
- xml - 长字符串中的 & 实体使模板出现故障
- swift - Xcode 11.4.1 没有响应
- swift - void函数中意外的非void返回值 - Swift