【发布时间】:2012-11-02 08:23:03
【问题描述】:
嘿,我正在尝试将文本转换为 ASCII,然后将其存储在服务器上,然后当我取回它时,我想将文本解码回 NSString
我使用以下代码在随机应用程序上进行测试.. 但在这里我将 NSdata 作为全局变量,所以它工作正常..
问题是我如何在 NSData 变量中获取我从服务器返回的值 NSString,以便我可以将其转换回我编码的文本。
.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];
获取用户输入的原始字符串。
编码后我从中得到的字符串也有符号和空格.. '' 和 ' ' 它不会通过网址,所以我所做的是删除空格和 thru
myString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""];
myString = [myString stringByReplacingOccurrencesOfString:@"<" withString:@""];
myString = [myString stringByReplacingOccurrencesOfString:@">" withString:@""];
所以现在我要回来的只是像“40786d61646f6f2131323334216b6d646f616f”这样的数字......这周围还有吗? 比较我只是检查文本的编码并按照相同的步骤进行比较,然后比较 if isEqualTo,但我希望恢复文本以便能够在应用程序上发布。
【问题讨论】:
-
恐怕你已经彻底糊涂了。您显然不明白“编码”仅适用于 8 位数据——一旦字符串在 NSString 中,它就是 Unicode。你也不明白,如果你转储(或使用
%@格式化)一个 NSData 对象,你会看到十六进制,而不是字符数据。 any NSData 对象也是如此。 (上面的十六进制是“@xmadoo!1234!kmdoao”) -
所以我可以使用普通的十六进制到字符串转换器将其转换回来..例如:stackoverflow.com/questions/6421282/…。有没有办法可以作为数据发送..?或任何其他加密选项? Thnx 并为迟到的回复感到抱歉..
-
使用 NSString initWithData... 您应该使用最初用于生成数据的相同字符串编码,但 UTF8 应该适用于几乎所有情况。
-
(你完全糊涂了。如果你没有人可以在本地讨论这个问题,从一个非常简单的测试用例开始,然后慢慢添加更多的功能,直到你明白出来。)
-
(下次你告诉我们“没用”的事情时,请准确告诉我们发生了什么!)
标签: iphone objective-c ios ios6