Я борюсь с передачей простого файла jpeg внутри тега ID3v2 из С++ через сокет TCP в java (Android). Библиотека «taglib» предлагает извлечь этот файл, и я могу сохранить jpeg как новый файл.
Функция отправки выглядит так
char *parameter_full = new char[f3->picture().size()+2];
sprintf(parameter_full,"%s\n\0",f3->picture().data());
// send
result = send(c,parameter_full,strlen(parameter_full),0);
delete[] parameter_full;
куда
f3->picture().data() возвращает указатель на внутреннюю структуру данных (она возвращает char*), а f3->picture().size() возвращает размер массива.
Затем Android получает его с помощью
String imageString = inFromServer.readLine();
byte[] imageBytes = imageString.getBytes();
Bitmap cover = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.length);
Но почему-то decodeByteArray всегда возвращает null. Моя идея заключается в том, что Java неправильно получает изображение, потому что imageString состоит только из 4 символов... в то время как извлеченный файл jpeg имеет размер 12,7 КБ. Но что пошло не так?
Мартин