boost::python でバイナリを Python から C++ に変換する必要があります。バイナリはイメージ ファイルまたはテキスト ファイルから取得されている可能性があります。ただし、イメージ ファイルのバイナリを C++ に変換するとエラーが発生します。以下はその例です。
C++
#include <boost/python.hpp>
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
#include <fstream>
#include <iostream>
using namespace boost::python;
void greet(char *name,char *ss)
{
std::ofstream fout(name,std::ios::binary);
std::cout<< "This length is:" << strlen(ss) <<std::endl;
fout.write(ss.strlen);
fout.close();
return;
}
BOOST_PYTHON_MODULE(ctopy)
{
def("greet",greet);
}
パイソン:
import ctopy
#It is right.
f=open("t1.txt","rb")
ctopy.greet("t2.txt",f.read())
f.close()
#Do a error.There isn't data in the file "p2.jpg".
f2=open("p1.jpg","rb")
ctopy.greet("p2.jpg",f2.read()) #error.the file "p2.jpg" will be a empty file.
f2.close()
画像のバイナリを C++ に変換するには?