关于iphone:如何将NSString转换为NSData?

how can I translate a NSString to NSData? And the data has the same content as the string

1
2
3
4
5
6
7
8
NSString * theString=@"e88d";
NSData * data;

// something I should implement

NSLog(@"%@", theString);

NSLog(@"%@",[data description]);

我希望两次打印的结果相同。

AES加密和解密:

(1)服务器:

如果明文是@"abcd";

aes加密的data(NSData data type)"d882830c dc892036 4345839f 13c7516a"

(2)在我的本地应用程序中,我的代码是:

1
2
NSData*data=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]];
NSString * mystring= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

然而,要成功地解密数据,我必须有一个data(NSData date type),它等于"d882830c dc892036 4345839f 13c7516a"。但正是mystring(NSString data type)而不是data(NSData data type)等于正确的值。

加密和解密功能都需要一个data(NSData data type)作为输入数据。

1
2
- (NSData*)AES128EncryptWithKey:(NSString*)key;
- (NSData*)AES128DecryptWithKey:(NSString*)key;


我想这可以回答你的问题

如何将nsstring值转换为nsdata?


要设置的描述不是特定于实例的值。它是类/对象的描述。nsdata的描述如下:"这是一个数据对象"。您可以通过重写该方法来重写该值。

1
2
3
- (NSString *)description {
    return @"e88d"; //normally used for class description
}

当然,您必须为此继承nsdata对象,然后像上面的代码一样重写描述。

我不认为你想用描述来解释这一点,只是解释它在每节课上的用途。

你可能想要的是:

1
2
3
4
5
NSString * theString=@"e88d";
NSData * data=[theString dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@"%@", theString);
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);


这个怎么样?

1
2
3
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]];
NSData *decryptedData = [data AES128DecryptWithKey:key];
NSString *mystring = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@interface NSString (Joke)
- (NSString *)description;
@end
@implementation NSString (Joke)
- (NSString *)description
{
    return @"Panda!";
}
@end

@interface NSData (Joke)
- (NSString *)description;
@end
@implementation NSData (Joke)
- (NSString *)description
{
    return @"Panda!";
}
@end