Специальные символы двоичного файла - PullRequest
2 голосов
/ 14 июня 2011

Я кодирую сортировку массива суффиксов, и этот алгоритм добавляет часовой символ к исходной строке.Этот символ не должен быть в исходной строке.

Поскольку этот алгоритм будет обрабатывать байты двоичных файлов, есть ли какой-нибудь специальный символ байта, который я могу гарантировать, что не найду ни в одном двоичном файле?Если он существует, как мне представить этот символ в кодировке C ++?

Я нахожусь на Linux, я не уверен, если это имеет значение.

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

Нет, нет.Двоичные файлы могут содержать любую комбинацию байтовых значений.Я бы не назвал их «символами», потому что они являются двоичными данными, не обязательно представляющими символы.Но независимо от названия, они могут иметь любое значение.

0 голосов
/ 14 июня 2011

Это больше похоже на вопрос, на который вы должны ответить сами.Мы не знаем, какие у вас двоичные данные, какие символы могут быть, а какие нет.Если вы говорите об общих двоичных данных - это может быть любая комбинация битов, байтов и символов, поэтому такого символа нет.

С другой точки зрения, вы говорите о строках.Что за струны?ASCII строки?Коды ASCII имеют очень ограниченный диапазон, например, поэтому вы можете использовать 128, например.Некоторые старые протоколы используют SOH (\1) для аналогичных целей.Так что может быть способ обойти, если вы точно знаете, какие строки вы обрабатываете.

Насколько я знаю, суффиксный массив не может быть применен к произвольным двоичным данным (ну, может, но не будетникакого смысла).

0 голосов
/ 14 июня 2011

Файл может содержать только биты.Группы битов могут быть интерпретированы как символ ASCII, число с плавающей точкой, фотография в формате JPEG, все, что вы можете себе представить.Интерпретация основана на выбранной вами схеме кодирования (например, ASCII, BCD).Если ваша схема кодирования не заполняет всю таблицу возможных кодов, вы можете выбрать один из них для своих специальных целей (например, цифры могут быть закодированы наивно на 4 бита, 2 ^ 4 = 16, поэтому у вас есть 6 избыточных кодовых слов).1001 *

...