如何使用自定义编码格式将字符转换为位?

时间:2018-02-21 08:51:48

标签: python python-3.x bit-manipulation codec

我创建了一个加密解密模块,其工作原理如下:

1)它接收.txt文件并读取

中的文本

2)使用我的加密算法,它将原始文本(OT)转换为1和0的唯一代码<0> 字符串

3)然后取1和0&#39> 字符串,将它们编码为具有标准格式的字节(每1或0写入8位)和将字节序列导出为文件。

4)然后调用模块中的第二个脚本,该脚本读取字节文件,并再次将其打开为1和0 字符

5)最后,使用我的解密算法,它需要1和0,并成功将它们翻译回原始文本。

问题在于第3步 - 遗憾的是,对于Python和Comp Sci来说,我很陌生,所以如果我提出这个解释,请道歉:

我已经意识到将OT转换为1和0的字符后,而不是将它们转换为具有通常编解码格式的字节(即8-每个字符的位数,平均而言),我需要它来写出&#39; 1&#39;的实际位。对于代码中的每1个字符,以及&#39; 0&#39;对于每0个字符 - 我认为我需要某种&#39;自定义编解码器&#39;。

你得到的是一个字节文件,它与编码序列中的1和0和0的字符数完全相同,而不是像以前那样每个字符8位。然后,我将对此输出和OriginalText.txt文件进行一些文件测量,以确保我的输出具有比OT更少的字节数(即更小的文件大小)。

最后,当然,第二个脚本接收此字节文件,使用我的自定义编码 - 解码格式将其转换回相同的1和0序列。然后使用我的解密算法将其转换为我的原始信息。

不幸的是,我不确定如何创建自己的自定义编解码器&#39;并指示Python以这种方式给我写一些位序列?

此外,也许我可以设法实现上述目标并获得我的自定义位序列,并将其存储在某种位(bitArray)的数组(或其他对象)中。在将其写入输出文件之前,我需要将我的bitArray和其他几个对象放入列表中。这个列表实际上是需要转换为二进制文件然后导出为文件的东西 - 我使用pickle,并且已完成所有我原来的char-binary / binary-char转换 - 将二进制文件留在里面bitArray没有改变。

此外,当pickle将输出文件转换回我的列表对象时,bitArray及其自定义二进制文件&#39;需要完全未经修改。

所以,除了不知道如何编写这个自定义编解码器之外,我假设pickle可以根据需要处理上述内容,但当然可能完全错误。

有没有办法可以实现我所需要的,而且我是否正确地认为pickle不会破坏我的bitArray中已有的位?

非常感谢,

真的很感激任何建议!

0 个答案:

没有答案