Сохранить NSString как целое число фиксированной длины? - PullRequest
0 голосов
/ 22 февраля 2011


возникли проблемы с поиском решения этой проблемы.

Я хочу взять большой упорядоченный текстовый файл слов и создать - в том же порядке - текстовый файл с числовыми значениями фиксированной длины.

Например:

Input File           Output File

AAA          ->      00000001
AAH          ->      00002718
AAZ          ->      71827651

Изначально казалось, что хэш-функция поможет. Однако они являются одним из способов. Также, возможно, они немного «тяжеловесны» для этого. В конце концов, мне не нужна криптография. Плюс, это справочный файл. Это никогда не изменится.

Любое сжатие не является обязательным бонусом. Тем не менее, я не хочу, чтобы файл стал больше, чем он есть. Вот почему я не просто хочу выписать слова в виде текста, но с фиксированной длиной.

Итак, суть; input - NSString переменной длины, output - целое число фиксированной длины. И я должен быть в состоянии взять целое число и выяснить строку.

Любая помощь высоко ценится!

спасибо!
XJ

1 Ответ

0 голосов
/ 22 февраля 2011

Ну, это будет немного грубым методом, но вот мое предположение.

Начните с создания пользовательской функции для преобразования одной буквы текста в целое число меньше 100. (Я не уверен, что такая функция уже существует, если это так, то отлично!) Возможно, вам нужно просто перейти к таким вещам, как "if ([input isEqual: @" a "]) {return 1;}

Затем запустите эту функцию для каждой буквы текста и получите окончательное целое число, объединив предыдущие результаты.

Например:

int myVal1 = [intConverter firstLetter]; int myVal2 = [intConverter secondLetter]; int myVal3 = [intConverter thirdLetter];

int finalValue = 100 ^ 3 + 100 ^ 2 * myVal1 + 100 * myVal2 + myVal3;

Тогда finalValue будет иметь вид 1 (myVal1) (myVal2) (myVal3), что, как я думаю, вы ищете.

Чтобы вернуть исходную строку, просто используйте функции mod (%) и деления, чтобы вернуть отдельные значения, затем запустите функцию intConverter в обратном направлении. (Это, вероятно, будет означать написание новой функции, которая в основном выполняет те операторы if в обратном порядке, ну да ладно.)

Надеюсь, это поможет.

...