欢迎各位兄弟 发布技术文章
这里的技术是共享的
当你在Python中处理字节串(bytes类型)时,直接打印字节串会显示其内容的可读形式,包括转义字符等。而使用.hex()
方法则会将字节串中的每个字节转换成其对应的两位十六进制字符串,不包含任何前缀,方便阅读和处理。
针对你的代码示例:
Python1bytes_hash = b"\xb5\xeb" 2print(bytes_hash) 3print(bytes_hash.hex())
print(bytes_hash)
的输出将会是 \xb5\xeb
,这是字节串的直接表示形式。在这个形式中,\x
后面跟着两位十六进制数表示一个字节的值。所以,\xb5
和 \xeb
分别代表了字节串中的两个字节,其十进制值分别为 181 和 235。
print(bytes_hash.hex())
的输出则是去掉\x
前缀的纯十六进制字符串,即 b5eb
。这里,每个字节被转换成了相应的两位十六进制数,并且没有前缀,形成了一个连续的十六进制字符串,这对于需要以纯十六进制形式展示或处理数据时非常有用。
因此,这段代码展示了如何初始化一个包含特定字节值的字节串,以及如何分别以原始字节串形式和十六进制字符串形式打印它。
Python 的 bytes
类型确实有一个 .hex()
方法,它可以将字节转换为十六进制字符串表示。以下是您给出的代码片段的正确运行方式:
python复制代码bytes_hash = b"\xb5\xeb" print(bytes_hash) # 打印字节码 print(bytes_hash.hex()) # 字节码转换为16进制普通字符串
当您运行这段代码时,输出将是:
复制代码b'\xb5\xeb' b5eb
第一行输出 b'\xb5\xeb'
显示了原始的字节码。
第二行输出 b5eb
显示了这些字节的十六进制表示。注意这里并没有前缀 0x
或者后缀(如 Python 中的整数十六进制表示),它只是一个由十六进制字符组成的字符串。