重新解释强制转换为二进制格式

问题描述

作为对以下问题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 (将#修改为@)