开发者

Store an NSString as a fixed length integer?

开发者 https://www.devze.com 2023-02-13 04:19 出处:网络
having a bit of trouble finding a so开发者_JAVA百科lution to this. I want to take a large ordered text file of words and create - in the same order - a text file of fixed length numeric values.

having a bit of trouble finding a so开发者_JAVA百科lution to this.

I want to take a large ordered text file of words and create - in the same order - a text file of fixed length numeric values.

For example:

Input File           Output File

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

Initially it seemed a hash function would do the trick. However they are one way. Also perhaps they are a bit "heavyweight" for this. After all, I don't need any cryptography. Plus, it's a reference file. It will never change.

Any compression is a bonus not essential. That said, I don't want the file to get any bigger than it already is. Which is why I don't just want to write out the words as text but with fixed lengths.

So, bottom line; input is a NSString of variable length, output is an integer of fixed length. And, I must be able to take the integer and figure out the string.

Any help much appreciated!

Thanks!

xj


Well, this would be a bit of a brute force method, but here's my guess.

Start by making a custom function to convert one letter of text to an integer less than 100. (I'm not sure if such a function already exists, if so then great!) You might need to just go to stuff like "if ([input isEqual: @"a"]){ return 1;}

Then, run that function on each letter of text, and get the final integer by combining the previous results.

For example:

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

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

Then, finalValue would be of the form 1(myVal1)(myVal2)(myVal3), which is what I think you're looking for.

To get back the original string, simply use the mod (%) and division functions to get the individual values back, then run the intConverter function backwards. (This would probably mean writing a new function that basically runs those if statements in reverse, but oh well.)

I hope this helps.

0

精彩评论

暂无评论...
验证码 换一张
取 消