Как создать «строку» входа в систему, которая содержит 2 встроенных нуля, а также строки символов для имени входа и пароля? - PullRequest
1 голос
/ 28 апреля 2011

Я пытаюсь выполнить завершение, как указано в этом псевдокоде:

NSString *login;
NSString *pass;
<snip>

NSString *loginString = [NSString stringWithFormat:@"\000%@\000%@", login, pass];

... и, как вы можете себе представить, я получаю предупреждение: «Литерал CFString содержит символ NUL».Я полностью понимаю, почему.Я ввел нулевой символ в мою строку.Что мне нужно немного помочь, так это как достичь этой цели с помощью правильного кода Obj-C.Любопытно, что код «как есть» на самом деле работает, но я знаю, что с этим предупреждением возникнет проблема.

Примечание - длина символов «login» и «pass» заранее неизвестна, можетбыть разными в разное время.Так что это устраняет какое-то статическое решение.Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Вы можете попробовать это:

unsigned short nullChar[] = {0};
NSString *nullCharSeparator = [[NSString alloc] initWithBytes:nullChar length:sizeof(nullChar) encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF16LE)];

(взято из http://www.cocoabuilder.com/archive/cocoa/174917-nul-characters-in-nsstring-cause-unexpected-results.html)

Тогда что-то вроде этого:

NSString *loginAndNull = [login stringByAppendingString:nullCharSeparator];
NSString *loginAndPass = [loginAndNull stringByAppendingString:password];
0 голосов
/ 28 апреля 2011

Я не знаю, зачем вам эти нули, но если вам нужно только объединить пароль пользователя, просто используйте NSString *loginString = [NSString stringWithFormat:@"%@%@", login, pass];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...