Objective c 是否将NSString存储为固定长度整数?
Objective c 是否将NSString存储为固定长度整数?,objective-c,string,cryptography,compression,nsstring,Objective C,String,Cryptography,Compression,Nsstring,在找到解决方案方面有点困难 我想获取一个大的单词有序文本文件,并以相同的顺序创建一个固定长度数值的文本文件 例如: Input File Output File AAA -> 00000001 AAH -> 00002718 AAZ -> 71827651 起初,似乎一个散列函数就可以做到这一点。然而,它们是一种方式。也可能他们在这方面有点“重量级”。毕竟,我不需要任何密
在找到解决方案方面有点困难 我想获取一个大的单词有序文本文件,并以相同的顺序创建一个固定长度数值的文本文件 例如:
Input File Output File
AAA -> 00000001
AAH -> 00002718
AAZ -> 71827651
起初,似乎一个散列函数就可以做到这一点。然而,它们是一种方式。也可能他们在这方面有点“重量级”。毕竟,我不需要任何密码。另外,这是一个参考文件。它永远不会改变
任何压缩都是一种额外的好处,但不是必需的。也就是说,我不想让文件变得比现在更大。这就是为什么我不想把单词写成文本,而是用固定的长度
所以,底线;输入是长度可变的字符串,输出是长度固定的整数。我必须能够得到整数并计算出字符串
非常感谢任何帮助
谢谢xj好吧,这可能是一种蛮力方法,但我猜是这样的 首先创建一个自定义函数,将一个文本字母转换为小于100的整数。(我不确定这样的函数是否已经存在,如果已经存在,那就太好了!)您可能只需要转到类似“if([input isEqual:@“a”]){return 1;}之类的内容 然后,对文本的每个字母运行该函数,并通过组合前面的结果得到最终的整数 例如:
Input File Output File
AAA -> 00000001
AAH -> 00002718
AAZ -> 71827651
int myVal1=[intConverter firstLetter];
int myVal2=[intConverter secondLetter];
int myVal3=[intConverter thirdLetter]
int finalValue=100^3+100^2*myVal1+100*myVal2+myVal3
那个么,最终价值将是形式1(myVal1)(myVal2)(myVal3),这就是我认为你们正在寻找的
要恢复原始字符串,只需使用mod(%)和division函数恢复单个值,然后向后运行intConverter函数(这可能意味着编写一个新函数,基本上反向运行if语句,但很好)
我希望这会有所帮助。简单地在数组/文件中使用字符串的索引/行号不是一个选项?使用数组意味着将它们存储在内存中,它有270K个单词。将它们存储在文件中的想法是,我可以在不将它们全部存储在内存中的情况下查找文件中的适当单词。要做到这一点,我需要知道在哪里查找。对于e例如,假设我想要第五十个单词。如果单词以固定长度格式存储,那么我可以导航到该字节位置。只有当文件有换行符时,行号才有用。这意味着使用这些换行符解析文件标记。这会花费太长时间。那么字符串的文件偏移量呢?你是说存储每个字符串都有一个偏移量?我想可以,但我需要存储270K个偏移量。是的,您将把偏移量存储在一个文件中,并且可以在偏移量上建立多个级别的索引(文本前缀-偏移量中的偏移量)。这是正常的解决方案。你知道这是怎么叫的吗?数据库:)非常酷,谢谢。奇怪的是,似乎没有任何标准的东西可以做到这一点。嗯,字符串实际上是以256为基数的数字,你把它限制为ASCII字符的子集(仅使用前100个字符)让它成为一个以100为基数的数字。这不是一个很酷的解决方案。