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

12,105

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]);
Share:
12,105
user230965
Author by

user230965

Updated on June 05, 2022

Comments

  • user230965
    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 the mystring(NSString data type) not the data(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
    user230965 about 14 years
    well,the printed out data is not the same as the string.
  • conorgriffin
    conorgriffin about 14 years
    probably because %@ you use in NSLog(@"%@",data); expects an NSString object, you're passing an NSData object.
  • user230965
    user230965 about 14 years
    if I use NSLog(@"%@",[data description]), I hope gdb will show: e88d. how can I get the data?
  • user230965
    user230965 about 14 years
    AES 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
    cobbal about 14 years
    Overly complicated, a simpler more generic solution: #define NSLog(...) NSLog(@"Panda!")