什么样的比特串好?
题主说的是不是BIN格式,如果是的话答案很简单,就是所有位都是0或者都是1的串才是“好”的BIN文件(对于二进制流本身而言)。 但是这个问题似乎没那么简单,因为人们通常把BIN格式的文件称为“定长”文件,也就是说,这种文件虽然所有项都有固定长度,但具体每个项目的值到底是多少没有任何规定,只要所有项目加起来整个文件的总长度是固定的即可。 因此问题就变成了如何找到总长度固定且所有位都是0或1的串。这是一个子问题;另一个子问题是,如果某个串既不是所有的位都是0也不是所有的位都是1,那么它是不是一个好的BIN文件呢?也就是有没有可能通过一定的方式把这个串修改成一个好的BIN文件? 如果是一个定长文件(每一个项目都有固定的长度)而且所有项目是二进制的,那么最好的方式就是把所有1替换成0,把所有0替换成1。之所以这样做是因为在二进制文件中同一个位置上的1和0是区分不同内容的唯一标识(因为文件是以非负整数序列的方式储存的,所以同一个地方有1就有0,反之亦然,否则这个位置的内容就必定会出错)。
因此经过这样的替换所有错误都变为0或者都为1,而总长度不会改变。这就是最好的情况了。当然,有些错误可能是尾部的,这样就需要做一些额外的处理,比如每个文件都加上一个全0或者全1的尾部。 全0或者全1的尾巴不需要占用太多空间,只需要一个0/1就能表示全0/全1的结尾部分,然后每两个连续的文件之间用0/1串分割开。这样,哪怕出现错序的情况也能很好的复原正确的文件。