2012-11-02 74 views
0

嘿,我试图让文本ASCII,然后将其存储在服务器上,那么当我拿回来,我想文本解码回的NSString,因为它是

我用过的下面的代码来测试随机应用程序..但在这里我有NSdata作为一个全局变量,所以它工作正常..

问题是我如何获得值NSString我从服务器中获取NSData变量,所以我可以将其转换回我编码的文本。

.h 

@interface passTestViewController : UIViewController 
{ 
    NSString *text; 
    NSData *d; 
} 

.M

- (IBAction)eButton:(id)sender { 
    text = [NSString stringWithFormat:@"%@%@%@",@"!",[_textField text],@"!"]; 

    d=[[NSString stringWithFormat:@"%@",text] dataUsingEncoding:NSASCIIStringEncoding]; 
    text = [NSString stringWithFormat:@"%@",d]; 

    [_label setText:text]; 
} 

- (IBAction)dButton:(id)sender { 

    NSString *dString = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding]; 
    dString = [dString stringByReplacingOccurrencesOfString:@"!" withString:@""]; 
    [_label setText:dString]; 
} 

我需要得到它的NSData。我把它发送到我的服务器通JSON,再后来当我拿回来......我把它作为一个字符串...我需要的是

NSData *d = stringThatIGetBackFromJson; 

这样我就可以把它转换直通

NSString *dString = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding]; 

获取用户输入的原始字符串。

而且字符串我从这个获得编码后有符号和空格..'<“>”和“” 它不会去通到url所以我所做的就是删除空格和<>直通

myString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@">" withString:@""]; 

所以现在我会回来是要去成为像“40786d61646f6f2131323334216b6d646f616f”号......反正是有解决这个? 来比较我只是检查编码的文本,并遵循相同的步骤,然后比较如果isEqualTo,但我想回到文本能够张贴在应用程序。

+0

恐怕你绝望地困惑。你显然不明白“编码”只适用于8位数据 - 一旦一个字符串在NSString中,它就是Unicode。你也不明白,如果你转储(或用'%@'格式化)一个NSData对象,你会看到十六进制,而不是字符数据。***任何*** NSData对象都是如此。 (上面的十六进制是“@xmadoo!1234!kmdoao”) –

+0

所以我可以使用正常的十六进制字符串转换器将其转换回来..例如:http://stackoverflow.com/questions/6421282/how-to- convert-hex-to-nsstring-in-objective-c。有没有一种方法可以作为数据发送......?或任何其他选项进行加密? thnx和sry用于最近的回复.. –

+0

使用NSString initWithData ...您应该使用原来用于生成数据的相同字符串编码,但UTF8应该可以在几乎所有情况下使用。 –

回答

6

尝试以下方式来的NSString转换为NSData的

NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

NSData* data=[yourString dataUsingEncoding: [NSString defaultCStringEncoding] ];

NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
data = [data subdataWithRange:NSMakeRange(0, [data length] - 1)];

如果数据不是空值终止

NSString* myString = [[NSString alloc] initWithData:nsDataString 
             encoding:NSUTF8StringEncoding] ; 

如果数据空值终止

NSString* myString = [NSString stringWithUTF8String:[nsDataString bytes]]; 
+0

我需要把它交给NSData。我发送它到我的服务器通过JSON,然后当我得到它回来...我把它作为一个字符串..我需要的是 NSData * d = stringThatIGetBackFromJson; 所以我可以通过 NSString * dString = [[NSString alloc] initWithData:d编码:NSASCIIStringEncoding]; 获取用户输入的原始字符串。 –

+0

我编辑了答案\ –

0

尝试改变NSASCIIStringEncodingNSUTF8StringEncoding

+0

试过了没有用。 –