Эй я пытаюсь получить текст в формате 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, но я хотел бы получить текст, чтобы иметь возможность отправлять сообщения в приложении.
Я боюсь вы безнадежно запутались. Вы, по-видимому, не понимаете, что «кодирование» применяется только к 8-битным данным - как только строка находится в NSString, она находится в Юникоде. Вы также не понимаете, что если вы сбрасываете (или форматируете с помощью '% @') объект NSData, вы увидите шестнадцатеричные, а не символьные данные.Это относится к *** любому объекту *** NSData. (Вышеупомянутый hex - «@xmadoo! 1234! Kmdoao») –
Так что я могу просто использовать стандартный шестнадцатеричный преобразователь для преобразования его обратно. ..: http://stackoverflow.com/questions/6421282/how-to- convert-hex-to-nsstring-in-objective-c. и есть ли способ, который я могу отправить как данные ..? или любой другой вариант шифрования? Thnx и sry для позднего ответа. –
Используйте NSString initWithData ... Вы должны использовать ту же строчную кодировку, которая использовалась для первоначального создания данных, но UTF8 должен работать практически во всех случаях. –