c - 在 C 中使用系统调用编写填充十六进制

标签 c linux system-calls

嘿,我对 C 本身相当陌生,对在 C 中使用系统调用也很陌生,但我必须将它用于作业,所以我试图练习读写文件。读取工作正常,但由于某种原因写入正在做奇怪的事情。它向文件写入某种我想要写入文件的数字的填充十六进制表示形式。任何帮助将不胜感激!!

buffer= 10;
if (write(file, &buffer,sizeof(int)) < sizeof(int)) {
    printf("Error in writing\n");
    exit(EXIT_FAILURE);
}

当我运行它时,它会将其放入文件中,但是当我打印出数字本身时,它会打印正确的数字

0a00 0000

最佳答案

sizeof(int) 是 4 个字节(显然在您的环境中),它是 32 位,可以用 8 个十六进制数字表示,这就是您在文件中看到的内容。

您显然正在使用 Little Endian机,因此首先写入最低有效字节。在大端机器上,您会在文件中看到 0000 000a。

关于c - 在 C 中使用系统调用编写填充十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353806/

相关文章:

linux - 在运行时获取 Linux 内核函数的结束地址

C GMP 非整数幂

java - 使用 JNI 加载 C 插件系统 : undefined symbol

c - 在调用exec *()系列函数时,argv的char *元素是否必须唯一?

php - UTF-8贯穿始终

linux - 信号&系统调用使用&关系

c - Unix(在 C 中)尝试为 XV6 编写 tail

c++ - boolean 值 c++ 的格式化输出

python - 在命令前添加 "sudo"使命令未知

linux - 如何编写一个兼容所有类unix系统的小程序?