скопировать все байты nsdata в ошибку char *

0

У меня есть следующая ситуация:

NSData *audioData = [NSData dataWithContentOfFile:[fileURL path] options:0 error:nil];

Мне нужно отправить этот audioData на сервер, используя метод, который принимает в качестве входного параметра pj_str_t value;

Так я и сделал:

unsigned char *getBytes = (unsigned char*)[audioData bytes]; //here insteand of 10600 bytes I only have 4 bytes.
value=pj_str((char*)getBytes); 

Значение представляет собой строку из 4 байтов. Что я делаю не так?

  • 0
    Вы не хотите притворяться, что необработанный фрагмент двоичных данных представляет собой строку. Попробуйте сначала закодировать его в base64.
Теги:
nsdata
pjsip

1 ответ

0
Лучший ответ

Помните, что аудиоданные могут содержать 0, а функция pj_str (char *), которую вы используете, будет принимать их в конце строки. Попробуй это:

pj_str_t string;
pj_strset(&string, getBytes, [audioData length]);
  • 0
    Мне нужно использовать метод pjsua_im_send (...) для отправки файла к месту назначения через сервер. С простым текстовым сообщением все отлично работает. Я использую: const char * message = [NSStringValue UTF8String]; pj_str_t value = ((char *) message); Вот и все. Почему .. с nsdata ... все кажется таким сложным?
  • 0
    Также я прочитал, что с помощью UDP я могу отправить только полезную нагрузку до 60 КБ. также, если audioData больше 60k, как я могу разделить буфер на 2 меньших буфера и чем дважды вызвать pjsua_im_send methiod.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню