用fstream方法读取二进制数据

时间:2013-11-23 21:45:27

标签: c++ c char fstream unsigned-char

我需要读二进制数据来缓冲,但在fstreams中我读取函数读取数据到 char 缓冲区,所以我的问题是:

如何将二进制数据传输/转换为 unsigned char 缓冲区,在这种情况下它是最佳解决方案吗?

实施例

  char data[54];
  unsigned char uData[54];
  fstream file(someFilename,ios::in | ios::binary);
  file.read(data,54);
  // There to transport **char** data into **unsigned char** data (?)
  // How to?

3 个答案:

答案 0 :(得分:3)

首先将它读入无符号字符数据

unsigned char uData[54];
fstream file(someFilename,ios::in | ios::binary);
file.read((char*)uData, 54);

演员阵容是必要但无害的。

答案 1 :(得分:2)

您不需要声明额外的数组uData。数据数组可以简单地转换为unsigned:

unsigned char* uData = reinterpret_cast<unsigned char*>(data);

访问uData时,指示编译器解释不同的数据,例如data [3] == -1,表示uData [3] == 255

答案 2 :(得分:1)

你可以使用

std::copy(data, data + n, uData);

其中nfile.read(data, 54)返回的结果。我,特别是char*unsigned char*您也可以使用

std::streamsize n = file.read(reinterpret_cast<char*>(uData));