2012-11-02 4 views
0

Hey je suis en train d'obtenir le texte en ASCII, puis le stocker sur un serveur puis quand je le récupérer je veux décoder le texte à NSStringNSData de NSString comme il est

je l'ai utilisé la code suivant pour tester sur une application aléatoire .. mais ici j'ai NSdata comme une variable globale donc ça fonctionne bien ..

Question est comment puis-je obtenir la valeur NSString je reviens du serveur dans la variable NSData donc je peut le convertir en le texte que j'ai encodé.

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

je dois obtenir à NSData. je l'envoie à mon serveur à travers JSON, puis plus tard, quand je le récupérer ... je reçois comme une chaîne .. ce que je dois est

NSData *d = stringThatIGetBackFromJson; 

afin que je puisse le convertir à travers

NSString *dString = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding]; 

pour obtenir la chaîne originale entrée par l'utilisateur.

également la chaîne que je reçois de cela après encode a les signes et espaces .. « < » « > » et « » Il ne serait pas passer par l'url si ce que je faisais était supprimer les espaces et <> à travers

myString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@">" withString:@""]; 

maintenant ce que je vais revenir va être juste des chiffres comme « 40786d61646f6f2131323334216b6d646f616f » ... est là de toute façon autour de cela? pour comparer je vérifie juste l'encodage du texte et suis les mêmes étapes, puis je compare if isEqualTo, mais je voudrais récupérer le texte pour être capable de poster sur l'application.

+0

J'ai peur Vous êtes désespérément confus. Vous ne comprenez apparemment pas que "encoding" s'applique uniquement aux données 8 bits - une fois qu'une chaîne est dans un NSString, elle est en Unicode. Vous ne comprenez pas non plus que si vous videz (ou formatez avec '% @') un objet NSData, vous verrez hex, pas de données de caractères.Cela est vrai pour *** tout objet NSData ***. (L'hexagone ci-dessus est "@xmadoo! 1234! Kmdoao") –

+0

Donc je peux juste utiliser un hex normal pour convertir le convertisseur pour le convertir en retour .. http://stackoverflow.com/questions/6421282/how-to- convertir-hex-à-nsstring-dans-objectif-c. et y at-il un moyen que je peux envoyer en tant que données ..? ou toute autre option pour le cryptage? Thnx et sry pour la réponse tardive .. –

+0

Utiliser NSString initWithData ... Vous devriez utiliser le même encodage de chaîne que celui utilisé pour produire les données à l'origine, mais UTF8 devrait fonctionner dans presque tous les cas. –

Répondre

6

Essayez le ci-dessous trois façons de convertir NSString à NSData

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

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

. NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
data = [data subdataWithRange:NSMakeRange(0, [data length] - 1)];

Si les données ne sont pas nulle terminaison,

NSString* myString = [[NSString alloc] initWithData:nsDataString 
             encoding:NSUTF8StringEncoding] ; 

Si les données sont nulle terminaison

NSString* myString = [NSString stringWithUTF8String:[nsDataString bytes]]; 
+0

Je dois l'obtenir à NSData. Je l'envoie à mon serveur via JSON, puis plus tard quand je le récupère ... je l'obtiens sous forme de chaîne .. ce dont j'ai besoin est NSData * d = stringThatIGetBackFromJson; donc je peux le convertir à travers NSString * dString = [[NSString alloc] initWithData: codage d: NSASCIIStringEncoding]; pour obtenir la chaîne d'origine saisie par l'utilisateur. –

+0

J'ai édité la réponse \ –

0

essayer de changer NSASCIIStringEncoding-NSUTF8StringEncoding

+0

essayé n'a pas fonctionné. –