所以。 我一直在试验fwrite()。
在我的系统sizeof(int)= 4。我有一个包含的数组,包括:1,2,3,4,5和6。
当我把它写入一个二进制文件并用hexdump查看它时,我得到:
0000000 0001 0000 0002 0000 0003 0000 0004 0000 0000010 0005 0000 0006 0000 0000018
它在4字节值之间写入零是什么?
越来越多的信号手柄
我可以修改并排程序集search顺序吗?
embedded式编程开发板的build议
Visual Studio命令编译器强制执行64位编译
我的C程序为钩子提供了一个callback函数。 我怎样才能保持它活着,不克不及?
如何通过没有控制台的cmd.exe启动分离进程?
程序死亡时,Linux套接字释放得太慢
C ++简单线程与参数(no .net)
如何在Windows上正确configurationnetbeans 6.7和c + +?
我想你误解了你的输出中有多大的一个字节 – 8位需要两个十六进制数字才能被完全表示。 您示例中的一个int是:
0001 0000
您可能希望显示为32位数据(或8位数据)而不是16位。这就是您的转储看起来很奇怪的原因。
我复制你的二进制文件,并运行几个不同的选项。 希望你找到启发的例子:
$ od -t x4 example 0000000 00000001 00000002 00000003 00000004 0000020 00000005 00000006 0000030 $ od -t x2 example 0000000 0001 0000 0002 0000 0003 0000 0004 0000 0000020 0005 0000 0006 0000 0000030 $ od -t x1 example 0000000 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 0000020 05 00 00 00 06 00 00 00 0000030
正如你可以从1字节和4字节的例子中看到的最好的,我也是一个小端机器,就像你一样。
由于1(例如)表示为4字节的十六进制,因此为00000001 。 显然你是在一个小端系统,因此当你检查你的文件显然是前后排序。
你的hexdump将两个字节分组为一个单词并改变字节序。 在大多数系统上,使用hexdump -C会将转储转换为阻止分组的标准视图。 在十六进制中,一个字符表示一个nybble,每个字节有两个nybbles。 所以你的4字节int应该总共有8个低位字节。 由于你的数字非常小,所以你的大部分nybbles都是0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。