views:

371

answers:

1

I am trying to get the ASCII numbers I load from a file to convert into plain text. I've looked at NSASCIIStringEncoding, but when I run it it just returns what I inputted.

Here's the code I'm using:

NSData *asciiData = [[myWords objectAtIndex:d] dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *test = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];

Here's an example:

ASCII string: 117 32 119 97

Expected output: u wa?

+2  A: 

Based on the comments on your question, it sounds like your input file looks something like this:

65 66 67

That is technically eight ASCII characters: the character for the digit '6', the character for the digit '5', the character for a space ' ', etc.

If you want to read those as numbers, and then output the ASCII characters they represent, you should read the file using NSString's initWithContentsOfFile:, then use NSScanner to convert those character sequences into numbers. Then, you can output those numbers directly to a file, casting them as type char, and the resulting file will be:

ABC

You don't actually need to declare that the numbers are ASCII when you output the file; ASCII is a system for interpreting a sequence of numbers as text. It's an ASCII file by virtue of the fact that it happens to look OK when you open it with a text editor.

benzado