Если вы не получаете правильное значение, то что-то не так с данными. Добавьте несколько вызовов NSLog, чтобы увидеть, что содержат строки.
Ответ 2
Вы можете использовать [NSString stringWithUTF8String: data].
Ответ 3
Чего вы ожидаете? У вас есть uninitalized char *. Затем вы добавляете 6 к указателю, который уже является undefined. Затем вы пытаетесь повернуть указатель, указывающий на любой старый мусор (и вы не знаете, где он указывает) на NSString *. Из этого ничего хорошего не может получиться.
Определите char *, указывающий на реальную, реальную строку C, используя кодировку ASCII или UTF-8. Затем создайте NSString следующим образом: