【问题标题】:NSData from NSString as it is [closed]来自 NSString 的 NSData [关闭]
【发布时间】: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


【解决方案1】:

尝试以下三种方法将NSString转换为NSData

1.NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

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

3.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]];

【讨论】:

  • 我需要把它送到 NSData。我通过 JSON 将它发送到我的服务器,然后当我取回它时......我将它作为一个字符串......我需要的是 NSData *d = stringThatIGetBackFromJson;所以我可以通过 NSString *dString = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding]; 转换它获取用户输入的原始字符串。
【解决方案2】:

尝试将NSASCIIStringEncoding 更改为NSUTF8StringEncoding

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2013-01-23
    • 2011-03-02
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多