所以,我不得不参加一个工作面试的测试,我被要求编写一个执行简单 XOR 加密的迷你应用程序,并遇到了这个问题。我使用 FileInputReader 来拉入每个字节,使用密钥执行 XOR 操作,然后将结果推回 FileOutputStream。这就是让我思考的原因。
FileInputStream 返回一个 int,一个 32 位有符号类型。当只接收一个字节时,您可以将其转换为“字节”类型。如果 FileInputStream 达到 EOF,它也会返回 -1。但是,二进制补码中的 -1 == 0xff,那么如果读取的字节真的是 0xff,而不是 EOF 怎么办?
0xff 是一个在数学上永远不会返回的字节,除非在特殊情况下(例如 EOF)?还是根据您正在阅读的数据,您可能需要考虑这种情况?