Python 字节表示
Python bytes representation
我正在 python 上编写一个十六进制查看器来检查原始数据包字节。我使用 dpkt 模块。
我假设一个十六进制字节的值可能在 0x00 和 0xFF 之间。但是,我注意到 python bytes 表示看起来不同:
b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1'
我不明白这些符号是什么意思。我如何将这些符号转换为可以在十六进制查看器中显示的原始 1 字节值?
\xhh 表示 hh 的十六进制值。即它是 Python 3 编码方式 0xhh.
参见 https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
字符串开头的b表示变量应该是bytes类型而不是str。上面的 link 也涵盖了这一点。 \n 是换行符。
您可以使用 bytearray 来存储和访问数据。这是在您的问题中使用字节字符串的示例。
example_bytes = b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1'
encoded_array = bytearray(example_bytes)
print(encoded_array)
>>> bytearray(b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1')
# Print the value of \x8a which is 138 in decimal.
print(encoded_array[0])
>>> 138
# Encode value as Hex.
print(hex(encoded_array[0]))
>>> 0x8a
希望对您有所帮助。
我正在 python 上编写一个十六进制查看器来检查原始数据包字节。我使用 dpkt 模块。
我假设一个十六进制字节的值可能在 0x00 和 0xFF 之间。但是,我注意到 python bytes 表示看起来不同:
b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1'
我不明白这些符号是什么意思。我如何将这些符号转换为可以在十六进制查看器中显示的原始 1 字节值?
\xhh 表示 hh 的十六进制值。即它是 Python 3 编码方式 0xhh.
参见 https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
字符串开头的b表示变量应该是bytes类型而不是str。上面的 link 也涵盖了这一点。 \n 是换行符。
您可以使用 bytearray 来存储和访问数据。这是在您的问题中使用字节字符串的示例。
example_bytes = b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1'
encoded_array = bytearray(example_bytes)
print(encoded_array)
>>> bytearray(b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1')
# Print the value of \x8a which is 138 in decimal.
print(encoded_array[0])
>>> 138
# Encode value as Hex.
print(hex(encoded_array[0]))
>>> 0x8a
希望对您有所帮助。