我编写了一个程序,通过根据某个公式(例如char - 3 * 22 + KEY)更改每个字符来对文本文件进行编码/解码。 (不发布在这里,因为它是家庭作业)
所有似乎都按预期工作,因为当我执行编码然后解码操作时,我得到原始文本:
$ cat text.txt
Hello World
./encrypt text.txt out.txt 1
$ cat out.txt
`}%%(8o(+%|
./encrypt out.txt out2.txt -1
$ cat out2.txt
Hello World
问题是,diff和cmp命令都抱怨视觉上相同的文件实际上是不同的:
$ diff -a text2.txt out2.txt
1c1
< Hello World
---
> Hello World
text2.txt rev.txt differ: char 1, line 1
没有尾随空格,但第二个文件以某种方式增加了2个字节。
这可能是什么原因?
更新
解码后的版本总是在开头产生两个\ 0字符
$ od -c final.txt
0000000 \0 \0 H e l l o W o r l d \n A \n
0000020 B \n C
0000023
$ od -c text2.txt
0000000 H e l l o W o r l d \n A \n B \n
0000020 C
0000021
为什么我在文本文件中看不到它们?