将NSString存储为固定长度的整数?

时间:2011-02-22 13:01:39

标签: objective-c string cryptography compression nsstring


找到解决方案时遇到一些麻烦。

我想采用一个大的有序文本文件,并以相同的顺序创建一个固定长度数值的文本文件。

例如:

Input File           Output File

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

最初似乎哈希函数会起作用。然而,他们是一种方式。也许他们对此有点“重量级”。毕竟,我不需要任何加密。另外,它是一个参考文件。它永远不会改变。

任何压缩都是不必要的奖励。也就是说,我不希望文件比现有文件更大。这就是为什么我不只是想把文字写成文字而是用固定的长度。

所以,底线; input是一个可变长度的NSString,输出是一个固定长度的整数。并且,我必须能够取整数并找出字符串。

非常感谢任何帮助!

谢谢!
XJ

1 个答案:

答案 0 :(得分:0)

嗯,这将是一种蛮力方法,但这是我的猜测。

首先制作一个自定义函数,将一个文本字母转换为一个小于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语句,但是很好。)

我希望这会有所帮助。