问题描述
作为对以下问题here的后续讨论。
HRESULT DumptoOutputConsole(const void* Data,size_t DataSize);
从@Scheff的前一个answer开始,如果我尝试使用buffer
转储DumptoOutputConsole
,则会出现异常。
更正式:
#include <cstring>
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
HRESULT DumptoOutputConsole(const void* Data,size_t DataSize); //Black Box implementation
int main()
{
const std::string header = "FloatData";
const float payload[] = { 1.0f,2.0f,3.0f };
// determine binary size of header and payload
const size_t sizeHeader = header.size();
const size_t sizeData = sizeof payload;
const size_t sizetotal = sizeHeader + sizeData;
// prepare binary buffer
std::vector<char> buffer(sizetotal);
std::memcpy(&buffer[0],header.data(),sizeHeader);
std::memcpy(&buffer[sizeHeader],(const char*)payload,sizeData);
HRESULT error= DumptoOutputConsole(reinterpret_cast<char*>(&buffer),sizetotal); // C0000005 Access Violation Exception
}
当前的任务是以4字节二进制格式打印浮点有效载荷值(存储为IEEE 754浮点数)。
类似\\x13L\\x02\\xb6
。我的想法是关于参数sizetotal
。这样,sizeof(float)=4
发送到控制台的字符净和就是sizetotal
个字节。但这并没有说明每个浮点值的4 byte
格式。
任何对此的理解将不胜感激。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)