【问题标题】:How to write two-byte integer as hex into a binary file using C如何使用 C 将两字节整数作为十六进制写入二进制文件
【发布时间】:2010-11-23 00:07:58
【问题描述】:

我有一个整数,使用 fscanf 从文件中检索。 如何将其作为十六进制的两字节整数写入二进制文件?

【问题讨论】:

  • 这有点不具体。通常,您要么编写二进制文件,要么编写文本。 2 字节十六进制,正如在 hexeditors 中看到的那样,只是显示二进制值的一种形式。
  • '到二进制文件中作为 2 字节的十六进制整数......' 所以你想从二进制文件中获取整数(哪种格式..假设你想把它存储在2 字节格式)并想将其写回二进制格式但使用十六进制?这是对数据如何表示的误解。十六进制数据只是另一种显示方式(十六进制、十进制、八进制等)。以科学格式查看您的 Windows 计算器。您将能够非常轻松快速地在不同的表示之间切换。您可以将整数存储为 TEXT 格式并显示十六进制表示

标签: c


【解决方案1】:

这会将一个短整数写入二进制文件。结果是 2 个字节的二进制数据(字节顺序取决于系统)。

int main(int argc, char* argv[])
{
   short i;
   FILE *fh;

   i = 1234;
   fh = fopen( argv[1], "wb" );
   fwrite( &i, sizeof( i ), 1, fh );
   fclose(fh);

}

【讨论】:

    【解决方案2】:
    fprintf(fpout,"%X",input_int);
    

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      您的意思是您只需要像"\x20\x20" 这样的文件中的两个字节,而不是像"0x2020" 那样的文本吗? 假设您的变量很短。 (sizeof(short) == 2)

      第一个:fwrite((const void*)&variable, sizeof(variable), 1, file);

      第二个:fprintf(file, "%#06x", variable);

      【讨论】:

      • 你不需要 "%#06x" - 没有 '#' 它只会打印 002020。
      猜你喜欢
      • 2014-03-07
      • 2021-10-27
      • 2015-05-15
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2014-03-08
      • 1970-01-01
      相关资源
      最近更新 更多