質問
接尾辞アレイのソートをコーディングしています。このアルゴリズムは、センチネル文字を元の文字列に追加します。この文字は元の文字列に載ってはいけません。
このアルゴリズムはバイナリファイルバイトを処理するため、バイナリファイルで見つからないようにできる特別なバイト文字はありますか?それが存在する場合、C ++コーディングでこのキャラクターをどのように表現できますか?
私はLinuxを使用しています、それが違いを生むかどうかはわかりません。
解決
いいえ、ありません。バイナリファイルには、バイト値のすべての組み合わせを含めることができます。それらはバイナリデータであり、(必ずしも)文字を表すものではなく、バイナリデータであるため、私はそれらを「文字」とは呼びません。しかし、名前が何であれ、彼らはどんな価値を持つこともできます。
他のヒント
これはあなたがあなた自身に答えるべき質問のようなものです。どんなバイナリデータがあり、どのようなキャラクターがそこにあるのか、何ができないのかはわかりません。ジェネリックバイナリデータについて話している場合 - ビットとバイト、文字の組み合わせが存在する可能性があるため、そのような文字はありません。
もう一方の観点から、あなたは文字列について話している。どんなひも? ASCII文字列?たとえば、ASCIIコードの範囲は非常に限られているため、たとえば128を使用できます。一部の古いプロトコルはSOHを使用しています(\1
)同様の目的。したがって、どの文字列が処理しているかを正確に知っていれば、回り方があるかもしれません。
私の知る限り、サフィックス配列は任意のバイナリデータに適用することはできません(まあ、それはできますが、意味がありません)。
ファイルにはビットのみを含めることができます。ビットのグループは、ASCII文字、浮動小数点番号、JPEG形式の写真、想像できるものとして解釈できます。解釈は、選択したコーディングスキーム(ASCII、BCDなど)に基づいています。コーディングスキームが可能なコードの表全体を埋めない場合、特別な装飾用に1つを選択できます(たとえば、桁は4ビット、2^4 = 16で素朴にエンコードできます。