如何以二进制而不是十六进制打印到我的文件

时间:2013-10-18 20:19:55

标签: c++ file io binary hex

我正在尝试编写一个输出每个可能的16位数的文件。我得到的输出是16位十六进制而不是16位二进制。我怎样才能以二进制形式获取它。谢谢

FILE * file = fopen("16BitFile.txt", "w"); 
for(int i=0; i<65536; i++) 
{ 
    fprintf(file, "%016x\n", i); 
}

2 个答案:

答案 0 :(得分:1)

std::ifstream ifs ("16BitFile.txt", std::ifstream::in);
int number;
ifs>>number;
std::bitset<16> x(number);
std::cout<<x;

您可以查看this以获取有关如何使用bitset打印整数的更多信息

答案 1 :(得分:0)

#include <stdio.h>
#include <stdexcept>
#include <stdint.h>

int main()
{
  FILE * file = fopen("16BitFile.txt", "wb");
  int16_t i = 0;
  for (;;) {
    if (fwrite(&i, sizeof(i), 1, file) != 1)
      throw std::runtime_error("fwrite failed");
    if (++i == 0)
      break;
  }
  if (fclose(file) != 0)
    throw std::runtime_error("fclose failed");
}