我正在对后缀数组排序进行编码,并且此算法会在原始字符串中附加一个标记字符。此字符不得包含在原始字符串中。
由于此算法将处理二进制文件字节,是否有任何特殊的字节字符,我可以确保在任何二进制文件中找不到? 如果存在,我如何在C ++编码中表示这个字符?
我在linux上,我不确定它是否有所作为。
答案 0 :(得分:2)
不,没有。二进制文件可以包含字节值的每个组合。我不会称它们为'字符',因为它们是二进制数据,而不是(必然)代表字符。但无论名称如何,它们都可以有任何价值。
答案 1 :(得分:0)
文件只能包含位。位组可以解释为ASCII字符,浮点数,JPEG格式的照片,您可以想象的任何东西。解释基于您选择的编码方案(如ASCII,BCD)。如果您的编码方案没有填写整个可能代码表,您可以为您的特殊选择选择一个(例如,数字可以在4位上天真编码,2 ^ 4 = 16,因此您有6个冗余代码字)。 / p>
答案 2 :(得分:0)
这更像是一个你应该自己回答的问题。我们不知道你有什么二进制数据,那里有什么字符,什么不可以。如果你在谈论通用二进制数据 - 可能有比特和字节以及字符的任意组合,所以没有这样的字符。
从另一个角度来看,你在谈论字符串。什么样的字符串? ASCII字符串?例如,ASCII码的范围非常有限,因此您可以使用128。一些旧协议使用SOH(\1
)用于类似目的。因此,如果您确切知道正在处理的字符串,可能会有一种方法。
据我所知,后缀数组不能应用于任意二进制数据(好吧,它可以,但它没有任何意义)。