2011-01-22 16 views
5

Tengo un NSString simple y estoy convirtiéndola en NSData:NSData volver al texto sin formato NSString

NSData *data = [[NSData dataWithBytes:[[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] 
           length:[[NSString stringWithFormat:@",%@",self.targetId] lengthOfBytesUsingEncoding:NSASCIIStringEncoding]] retain]; 

Ahora queremos obtener el texto plano del objeto NSData.
si estoy haciendo lo siguiente:

NSString* dataStr = [NSString stringWithFormat:@"%@",data]; 

- Estoy recibiendo sólo una expresión hexadecimal (es decir < 9c3f473e 02000000 0b0000>) y no la simple cadena que quiero!

He probado también usando initWithData -

NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 

Pero siempre muestra gibrish, no importa qué codificación se lo doy.

¿Puedes ayudar aquí? :)

+0

¿Usted intentó NSUTF8StringEncoding en lugar de NSASCIIStringEncoding? –

Respuesta

9

Es necesario simplificar su primer fragmento de código para:

NSData *data = [[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] 

Y entonces su segundo fragmento de decodificación funcionará:

NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
+0

¡Tenga en cuenta que debe liberar NSString! No es lanzado de forma automática. –

+0

¡Genial! funciona - ¡muchas gracias! – Guys

1

Haga el siguiente cambio, funcionará.

NSData *data = [[NSString stringWithFormat:@",%@",self.targetId] dataUsingEncoding:NSASCIIStringEncoding] ; 

Has hecho NData de datos.