二进制文件特殊字符



我正在编码一个后缀数组排序,该算法将一个sentinel字符附加到原始字符串中。此字符不能在原始字符串中。

由于这个算法将处理二进制文件的字节,我可以确保在任何二进制文件中都找不到任何特殊的字节字符吗?如果它存在,我如何在C++编码中表示这个字符?

我在linux上,我不确定它是否有什么不同。

不,没有。二进制文件可以包含每个字节值的组合。不过,我不会称它们为"字符",因为它们是二进制数据,不一定代表字符。但无论名字是什么,它们都可以有任何价值。

这更像是一个你应该自己回答的问题。我们不知道你有什么二进制数据,什么字符可以存在,什么字符不能。如果你谈论的是通用二进制数据,可能有任何比特、字节和字符的组合,所以没有这样的字符。

从另一个角度来看,你说的是弦。什么样的绳子?ASCII字符串?例如,ASCII代码的范围非常有限,因此可以使用128。一些旧的协议将SOH(1)用于类似的目的。因此,如果你确切地知道你正在处理什么字符串,可能会有一种方法。

据我所知,后缀数组不能应用于任意二进制数据(当然可以,但没有任何意义)。

文件只能包含位。比特组可以被解释为ASCII字符、浮点数字、JPEG格式的照片,任何你能想到的。解释基于您选择的编码方案(如ASCII、BCD)。如果你的编码方案没有填满整个可能的代码表,你可以为你的特殊目的选择一个(例如,数字可以天真地编码在4位上,2^4=16,所以你有6个多余的码字)。

最新更新