c - 二进制 0000 到 FFFF 使用 C

标签 c binary

我正在尝试使用 C 进行编程以将二进制数据写入 .bin 文件,然后迭代以从 0000 写入到 FFFF。我想我会使用带有“wb”标签的 fopen,然后能够写入二进制数据,但我不确定如何使用 C 从 0000 迭代到 FFFF。感谢您的帮助。

现在这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
 FILE *f = fopen("binary.bin", "wb");
 unsigned long i;

 //if(f == NULL) { ...error handling... }

 for(i = 0x0000; i <= 0xFFFF; i++){
  // Write something to the file, e.g. the 16-bit (2 byte) value of "i"
  unsigned short someData = i;
  fwrite(&someData, 1, 2, f);
 }

 fclose(f);
 return 0;
 //printf("Hello World\n");
 getchar();
}

这将输出 00 00 01 00 02 00 ...

现在是我的问题。这不是应该读出00 00 00 01 00 02...开头不是应该多一个'00'吗?

此外,我一直在尝试查看如何复制和扩展它,从而使其成为 0000 0000 0001 0001 等? [更新:我刚刚复制了 fwrite 行并再次执行,它解决了这个问题]

最佳答案

这是一个将一些二进制数写入文件的简单示例。

FILE *f = fopen("yourfile", "wb");

if(f == NULL) { ...error handling... }

for(unsigned long i = 0x0000; i <= 0xFFFF; ++i)
{
    // Write something to the file, e.g. the 16-bit (2 byte) value of "i"
    unsigned short someData = i;
    fwrite(&someData, 1, 2, f);
}

fclose(f);

请注意,此处的变量 i 必须大于 16 位,这样它才不会回绕(请参阅我对其他答案的评论)。 long 类型保证至少 32 位的大小。

关于c - 二进制 0000 到 FFFF 使用 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177199/

相关文章:

c++ - C & C++ 中 sizeof() 运算符的返回值

c - 在 C 中返回多个二维数组,行数和列数从主文件中输入

objective-c - objective-c : binary operations with Integers?

使用 STL 算法与容器(char * 除外)进行 C++ 二进制文件 I/O

c - 如何从 C 中的整数中提取位?

我能让这个 C 程序更快吗?

掷骰子游戏不返回正确的值

C while 循环 - 代码不起作用

python - 写入文件夹时文件更改

bash - 在shell脚本中将十进制数转换为十六进制和二进制