how can I translate a NSString to NSData? And the data has the same content as the string
Solution 1
I think this might answer your question
How do I convert a NSString value to NSData?
Solution 2
the description you wanna set is not an instance specific value. It's the description of the class/object. NSData will have a description of like: 'this is a data object'. You can override this value thou by overriding the method.
- (NSString *)description {
return @"e88d"; //normally used for class description
}
Ofcourse you will have to inherit the NSData object for that and then override the description like code above.
PS. I dont think you wanna use description for this just explaining what the use of it is in every class.
What you might want is:
NSString * theString=@"e88d";
NSData * data=[theString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", theString);
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
user230965
Updated on June 05, 2022Comments
-
user230965 almost 2 years
NSString * theString=@"e88d"; NSData * data; // something I should implement NSLog(@"%@", theString); NSLog(@"%@",[data description]);
I want the results of the two printings to be the same.
AES encryption and decryption:
(1).The server:
If the plaintext is
@"abcd";
The AES encrypted
data(NSData data type)
is"d882830c dc892036 4345839f 13c7516a"
(2).in my local app, my code is:
NSData*data=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]]; NSString * mystring= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
However, to decrypt data successfully, I must have a
data(NSData date type)
which equals to"d882830c dc892036 4345839f 13c7516a"
. But it is themystring(NSString data type)
not thedata(NSData data type)
that equals the right value.The encryption and decryption function both need a
data(NSData data type)
as input datas.- (NSData*)AES128EncryptWithKey:(NSString*)key; - (NSData*)AES128DecryptWithKey:(NSString*)key;
-
user230965 about 14 yearswell,the printed out data is not the same as the string.
-
conorgriffin about 14 yearsprobably because %@ you use in
NSLog(@"%@",data);
expects an NSString object, you're passing an NSData object. -
user230965 about 14 yearsif I use NSLog(@"%@",[data description]), I hope gdb will show: e88d. how can I get the data?
-
user230965 about 14 yearsAES encryption and decryption: server: if the plaintext is :@"abcd"; the AES encrypted data(NSData data type) is :"d882830c dc892036 4345839f 13c7516a" in my local app, my code is : NSData*data=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]]; NSString * mystring= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; however, to decrypt the AES encrypted string, I must got a data(NSData date type) which equals to "d882830c dc892036 4345839f 13c7516a".But it is the mystring (NSString data type) not the data(NSData data type) that equals to the right value.
-
cobbal about 14 yearsOverly complicated, a simpler more generic solution:
#define NSLog(...) NSLog(@"Panda!")