将任意文件序列化到uint8_t缓冲区

时间:2016-04-23 17:24:00

标签: c++ ns-3

所以我试图用ns-3做一些网络模拟。 我想传输一个文件(例如可能很大,一些视频文件),所以我必须在框架提供的数据结构中“打包”文件

ns3::Packet::Packet ( uint8_t const * buffer, uint32_t size )

所以我需要将我的文件序列化到uint8_t缓冲区 - 到目前为止我已尝试过这个:

std::ifstream input_sample_file("sample_input_file.mp4",std::ifstream::out | std::ifstream::binary);
std::ofstream output_sample_file("sample_output_file.mp4",std::ifstream::binary | std::ifstream::in );
long sample_file_size;
sample_file_size = getFileSize(input_sample_file);
char * sample_buffer = new char [sample_file_size];
input_sample_file.read(sample_buffer, sample_file_size);
uint8_t * sample_buffer_adjusted = new uint8_t [sample_file_size];
std::memcpy(&sample_buffer_adjusted, (const char *) sample_buffer, sample_file_size);

首先当然效率非常低,当然memcpy失败了,这不应该是一个惊喜,但我没有尝试解决这个问题,因为必须要将输入文件直接序列化到uint8_t缓冲区的其他方法,然后将其移交给ns3::Packet::Packet

0 个答案:

没有答案