c - 在某些平台上向文件写入字节会被交换

标签 c io posix fwrite

下面的代码在不同的系统上给出了不同的输出:

int fd = open(filename, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
byte_t data[] = { 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b 0x0c, 0x0d };

write(fd, data, sizeof(data));

在 Mac 上,文件名的“hexdump”给出了我所期望的内容

00 01 02 03 0a 0b 0c 0d

在 Ubuntu 和 Windows 上(代码不同但效果相同)你会得到

01 00 03 02 0b 0a 0d 0c

我想要打印平台

00 01 02 03 0a 0b 0c 0d

那么我应该如何进行?

最佳答案

看起来 hexdump 实用程序交换了字节。请显示您在每个平台中使用的 hexdump 命令。

要确认它,请测试

byte_t data[] = { 'a', 'b', 'c', 'd', 'e' }

并比较 hexdump 和 cat(或类型)输出。

关于c - 在某些平台上向文件写入字节会被交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18389096/

相关文章:

c++ - Sigaction 并将 Linux 代码移植到 Windows

android - hrtimer 的触发时间比我设定的要早

c - 缺少 main() 会阻止链接时创建可执行文件

java - 在 Java 中读取文本文件最后一行的最佳方式是什么?

Android OutOfMemoryError 与 XML

linux - 当每行不以数字开头时在 shell 中进行数字排序

c - 我试图使用 for 循环找到素数 1-n

除非包含 printf(),否则 C 循环会抛出错误?

ruby - ruby rm_rf 是异步的吗?

c - 在哲学家就餐中使用 Pthreads 显示死锁