Python: 将特殊字符转换为可操作的整数?
Python: Converting special characters into operable integers?
我目前正在研究一个非常简单的加密项目算法,以展示对加密工作原理的基本理解,我的加密算法基本上只使用 'ord()' 函数将标准 ASCII 字符转换为算法可以使用的整数从事于。
我 运行 遇到的问题是我还需要我的程序能够加密,例如 Windows 可执行 (EXE) 文件的内容。为此,我需要将各种特殊字符(非 ASCII)转换为我可以对其进行运算的整数。
我不太了解编码,但据我了解,'ord()' 之所以有效,是因为有一个 ASCII 字符映射表,每个字符都有对应的编号。我似乎无法弄清楚如何将 EXE 文件的特殊字符直接转换为整数,所以我尝试转换为对我来说似乎更通用的字节(如果我错了请纠正我)。
此时,我只是在寻找一种能够读取 EXE 文件并将每个字符转换为特定于该字符的数字(用于加密/解密目的)的解决方案。
您将分配给字节(如 ASCII 标准)的含义与字节本身混淆了。 ord()
只是为您提供给定字节的数值。 Python 解释这些字节并向您显示 ASCII 代码点不存在。
换句话说,ord()
不必查询 ASCII table 并且可以处理 任何 字节值。它所要做的就是获取已知的字节值并为您提供一个 Python int
对象。
以二进制形式读取您的数据(在文件模式中添加 b
打开文件),然后使用 ord()
。在 Python 2 中,这将导致 str
个对象,并且此类对象中的每个字符实际上都是 0 - 255 范围内的字节值。
请注意,如果您使用的是 Python 3,则以二进制模式从文件读取结果会生成一个 bytes
对象,该对象更清楚地表明这些是范围内的整数值:
>>> b'abc'
b'abc'
>>> b'abc'[0]
97
索引到 bytes
对象中的单个点会生成整数值,不需要调用 ord()
。
我目前正在研究一个非常简单的加密项目算法,以展示对加密工作原理的基本理解,我的加密算法基本上只使用 'ord()' 函数将标准 ASCII 字符转换为算法可以使用的整数从事于。
我 运行 遇到的问题是我还需要我的程序能够加密,例如 Windows 可执行 (EXE) 文件的内容。为此,我需要将各种特殊字符(非 ASCII)转换为我可以对其进行运算的整数。
我不太了解编码,但据我了解,'ord()' 之所以有效,是因为有一个 ASCII 字符映射表,每个字符都有对应的编号。我似乎无法弄清楚如何将 EXE 文件的特殊字符直接转换为整数,所以我尝试转换为对我来说似乎更通用的字节(如果我错了请纠正我)。
此时,我只是在寻找一种能够读取 EXE 文件并将每个字符转换为特定于该字符的数字(用于加密/解密目的)的解决方案。
您将分配给字节(如 ASCII 标准)的含义与字节本身混淆了。 ord()
只是为您提供给定字节的数值。 Python 解释这些字节并向您显示 ASCII 代码点不存在。
换句话说,ord()
不必查询 ASCII table 并且可以处理 任何 字节值。它所要做的就是获取已知的字节值并为您提供一个 Python int
对象。
以二进制形式读取您的数据(在文件模式中添加 b
打开文件),然后使用 ord()
。在 Python 2 中,这将导致 str
个对象,并且此类对象中的每个字符实际上都是 0 - 255 范围内的字节值。
请注意,如果您使用的是 Python 3,则以二进制模式从文件读取结果会生成一个 bytes
对象,该对象更清楚地表明这些是范围内的整数值:
>>> b'abc'
b'abc'
>>> b'abc'[0]
97
索引到 bytes
对象中的单个点会生成整数值,不需要调用 ord()
。