接尾辞配列の並べ替えをコーディングしていますが、このアルゴリズムは元の文字列に番兵文字を追加します。この文字は元の文字列に含まれていてはなりません。
このアルゴリズムはバイナリファイルのバイトを処理するので、バイナリファイルで見つからないことを確認できる特別なバイト文字はありますか?存在する場合、C ++コーディングでこの文字をどのように表現しますか?
私はLinuxを使用していますが、違いが生じるかどうかはわかりません。
いいえ、ありません。バイナリファイルには、バイト値のすべての組み合わせを含めることができます。ただし、これらはバイナリデータであり、(必然的に)文字を表すものではないため、「文字」とは呼びません。しかし、名前が何であれ、それらは任意の値を持つことができます。
ファイルにはビットのみを含めることができます。ビットのグループは、ASCII文字、浮動小数点数、JPEG形式の写真など、想像できるあらゆるものとして解釈できます。解釈は、選択したコーディングスキーム(ASCII、BCDなど)に基づいています。コーディングスキームが可能なコードのテーブル全体を満たさない場合は、特別な目的のために1つを選択できます(たとえば、数字は4ビットで単純にエンコードされる可能性があります(2 ^ 4 = 16)。したがって、6つの冗長なコードワードがあります)。
これは、自分で答えるべき質問のようなものです。私たちはあなたが持っているバイナリデータとそこにあることができる文字とできないものを知りません。ジェネリックバイナリデータについて話している場合、ビットとバイト、および文字の任意の組み合わせが存在する可能性があるため、そのような文字はありません。
他の観点から、あなたは文字列について話している。どんな弦?ASCII文字列?たとえば、ASCIIコードの範囲は非常に限られているため、たとえば128を使用できます。一部の古いプロトコルは\1
、同様の目的でSOH()を使用します。したがって、処理している文字列を正確に知っていれば、回避策があるかもしれません。
私の知る限り、接尾辞配列は任意のバイナリデータに適用することはできません(まあ、適用できますが、意味がありません)。