用python一次从文件中读取一个字节

用python一次从文件中读取一个字节,python,block-cipher,Python,Block Cipher,为了在python中实现AES,我必须创建一个状态数组(总共128位的4x4矩阵,每个元素有一个字节),如何从输入文本文件中一次读取一个字节 既然您提到4x4矩阵,我就假设您使用的是NumPy 假设我们有text.txt和“这是一个测试”∆\n“作为其内容。我们可以使用void数据类型处理原始数据 >>> arr = np.fromfile('text.txt', dtype='|V1') >>> arr array([b'\x74', b'\x68', b'

为了在python中实现AES,我必须创建一个状态数组(总共128位的4x4矩阵,每个元素有一个字节),如何从输入文本文件中一次读取一个字节

既然您提到4x4矩阵,我就假设您使用的是NumPy

假设我们有
text.txt
和“
这是一个测试”∆\n
“作为其内容。我们可以使用void数据类型处理原始数据

>>> arr = np.fromfile('text.txt', dtype='|V1')
>>> arr
array([b'\x74', b'\x68', b'\x69', b'\x73', b'\x20', b'\x69', b'\x73',
       b'\x20', b'\x61', b'\x20', b'\x54', b'\x45', b'\x53', b'\x54',
       b'\x20', b'\xC3', b'\xB8', b'\xC2', b'\xB4', b'\xC2', b'\xAE',
       b'\xE2', b'\x80', b'\xA0', b'\xCB', b'\x99', b'\xE2', b'\x88',
       b'\x86', b'\x0A'], dtype='|V1')
这将产生与相同的数据,尽管ASCII显示为字符

>>> with open('text.txt', 'rb') as fp:
...     byte = fp.read()
>>> byte
b'this is a TEST \xc3\xb8\xc2\xb4\xc2\xae\xe2\x80\xa0\xcb\x99\xe2\x88\x86\n'

您可以阅读这些行,将列表连接成一个字符串,然后逐字阅读。假设采用ASCII编码,一次应该是一个字节。谢谢您的回答,但请告诉我如何将原始数据类型的numpy数组转换为其相应的原始类型,换句话说,如果可能,如何使用numpy将状态数组中的文本文件取回来。