将jpeg从c ++转移到android(java)

时间:2011-03-30 18:44:11

标签: java c++ android sockets taglib

我正在努力将ID3v2标记内的简单jpeg文件从c ++通过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 KB。 但出了什么问题?

马丁

1 个答案:

答案 0 :(得分:2)

您不应对字节数据使用字符串函数,因为0值被视为字符串终止符。如果您需要在Java端复制char*以及byte[] InputStream读取函数,请尝试在C ++端查看memcpy。