2012-11-02 2 views
0

Эй я пытаюсь получить текст в формате ASCII, а затем сохранить его на сервере, то, когда я получить его обратно я хочу, чтобы декодировать текст обратно в NSStringNSData из NSString, как это

Я использовал следующий код для проверки на случайное приложение .. но здесь у меня есть NSdata как глобальная переменная, поэтому она отлично работает.

Вопрос: как получить значение NSString, я вернусь с сервера в переменной NSData, чтобы i может преобразовать его обратно в текст, из которого я закодирован.

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

мне нужно, чтобы получить его NSData. я отправить его на мой сервер через JSON, а потом, когда я получить его обратно ... я получить его в виде строки .. то, что мне нужно, это

NSData *d = stringThatIGetBackFromJson; 

так что я могу преобразовать его через

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

, чтобы получить исходную строку, введенную пользователем.

Также строка, я получаю от этого после кодирования имеет знаки и пробелы .. «<» «>» и «» Он не будет идти до конца к URL, так что я сделал, удалить пробелы и <> через

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

так что теперь я перезвоню собирается быть просто номера, как «40786d61646f6f2131323334216b6d646f616f» ... есть в любом случае вокруг этого? , чтобы сравнить, я просто проверяю кодировку текста и выполняю те же шаги, а затем сравниваю if isEqualTo, но я хотел бы получить текст, чтобы иметь возможность отправлять сообщения в приложении.

+0

Я боюсь вы безнадежно запутались. Вы, по-видимому, не понимаете, что «кодирование» применяется только к 8-битным данным - как только строка находится в NSString, она находится в Юникоде. Вы также не понимаете, что если вы сбрасываете (или форматируете с помощью '% @') объект NSData, вы увидите шестнадцатеричные, а не символьные данные.Это относится к *** любому объекту *** NSData. (Вышеупомянутый hex - «@xmadoo! 1234! Kmdoao») –

+0

Так что я могу просто использовать стандартный шестнадцатеричный преобразователь для преобразования его обратно. ..: http://stackoverflow.com/questions/6421282/how-to- convert-hex-to-nsstring-in-objective-c. и есть ли способ, который я могу отправить как данные ..? или любой другой вариант шифрования? Thnx и sry для позднего ответа. –

+0

Используйте NSString initWithData ... Вы должны использовать ту же строчную кодировку, которая использовалась для первоначального создания данных, но UTF8 должен работать практически во всех случаях. –

ответ

6

Постарайся ниже три способов преобразования 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)];

Если данные не нулевого байт,

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

Если данные нулевого байта

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

Мне нужно получить его в NSData. я отправляю его на свой сервер через JSON, а затем позже, когда я его верну ... я получаю его как строку .. мне нужно, NSData * d = stringThatIGetBackFromJson; , поэтому я могу преобразовать его через NSString * dString = [[NSString alloc] initWithData: d encoding: NSASCIIStringEncoding]; , чтобы получить исходную строку, введенную пользователем. –

+0

Я отредактировал ответ \ –

0

попытка изменить NSASCIIStringEncoding к NSUTF8StringEncoding

+0

пытался не работать. –

Смежные вопросы