python - Python 中的 Null 字节表示

标签 python python-3.x nul

我有一个疑问,我很难理解代码的样子,所以我会尽我所能地解释。我试图查看和搜索 NUL 字节并将其替换为另一个 NUL 类型字节,但计算机需要能够区分不同 NUL 字节之间的差异。例如,十六进制代码 00 等于 NUL,十六进制代码 01 等于 SOH。假设我想创建代码来相互替换它们。代码示例

TextFile1 = Line.Replace('NUL','SOH')
TextFile2.write(TextFile1)

是的,我已经阅读了很多不同的帖子,只是想了解如何将其放入工作代码中。第一个问题是我不能将十六进制 00 的输出复制并粘贴到 python 模块中,它只是无法粘贴。继续阅读显示 0x00 类型格式用于表示它,但我在寻找 python 3.x 的正确表示时遇到问题

Print (\x00)
output = nothing shows   #I'm trying to get output of 'NUL' or as hex would show '.' either works fine --Edited

那么如何让模块理解我正在尝试表示 HEX 00 或“NUL”并表示为“.”对 SOH 执行相同的操作,不仅限于那些类型的 NUL 字符,而只是使用这些字符作为示例,因为我想使用所有 256 个十六进制字符。但在粘贴到另一个程序时能够像十六进制编辑器一样分辨出区别。也许我需要让两个程序使用相同的编码类型,但不太确定。我只需要一个非常简单的示例文本,作为我如何搜索和替换不可表示的十六进制字符,并在记事本或 Notepad++ 中查找和替换它们,根据我的阅读,只有 Notepad++ 有能力这样做。

最佳答案

如果您使用的是 Python 3,您应该真正使用 bytes 对象。 Python 3 字符串是 unicode 代码点的序列。要使用字节字符串,请使用 bytes (这与使用“字节序列”模型的 Python 2 字符串几乎相同)。

>>> bytes([97, 98, 99])
b'abc'
>>>

请注意,要编写 bytes 文字,请在字符串中的左引号之前添加 b

要回答您的问题,要查找 0x000x01 的表示,只需查看:

>>> bytes([0x00, 0x01])
b'\x00\x01'

注意,0x000 是相同的类型,它们只是不同的文字语法(十六进制文字与十进制文字)。

>>> bytes([0, 1])
b'\x00\x01'

我不知道你所说的 Notepad++ 是什么意思。

下面是一个用其他内容替换空字节的示例:

>>> byte_string = bytes([97, 98, 0, 99])
>>> byte_string
b'ab\x00c'
>>> print(byte_string)
b'ab\x00c'
>>> byte_string.replace(b'\x00', b'NONE')
b'abNONEc'
>>> print(byte_string.replace(b'\x00', b'NONE'))
b'abNONEc'

关于python - Python 中的 Null 字节表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740284/

相关文章:

python - 将序列化程序的模型实例拆分为 3 个不同的字段

python-3.x - 隐藏/显示列时调整 Matplotlib 中的轴大小

python - 无法读取美丽汤的 html 页面

c - argc/argv 影响数组中的空字节?

c# - 相当于 C# (.NET) 中 Python 的 request.session.auth

python - 如何正确使用python socket.settimeout()

javascript - 使用python将base64字符串转换为png图像

python - Flask 调用另一个函数

c - 即使 char 数组以 null 终止并经过检查, printf 也会吐出垃圾

c++ - 当 NUL 字符定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节数?