【问题标题】:Write() function understanding hexadecimal values [closed]Write() 函数理解十六进制值
【发布时间】:2021-02-19 05:13:47
【问题描述】:

我在 ubuntu 中创建了一个使用 write() 的程序:

for(i = 0; i < num_times; i++)
{
write(fd, a, strlen(a)); 
write(fd, &i, sizeof(int));
}

它在文件中写入一个默认字符和 N 个整数。调用是这样的:

write_program(我写的txt文件)(我重复写N次)

write_program 它是可执行文件。

所以对于 N == 2,我会得到类似的结果:

0'a'1'a'

其中a等于'so2'

当我用 ghex 打开它来检查十六进制值时,我得到了:

73 6F 32 00 00 73 6F 32 01(加上末尾的字符)

我的问题是,73 6F 32 重复是什么意思?后面是整数表示(00,01...) 但是,这些十六进制值是什么意思?

【问题讨论】:

  • 什么“默认字符”?请edit您的问题包括minimal reproducible example。还包括你如何初始化a,它是什么以及它有什么内容。
  • 已经完成,认为问题已经很清楚了
  • 声称的输出不是您应该得到的。 sizeof(int) 可能是 4,这意味着在第一个和第二个 so2 序列之间应该有 四个 个零字节,而不是您显示的两个。

标签: c ubuntu write


【解决方案1】:

73 6F 32 重复是什么意思?

这些是字符's''o''2'ASCII codes(十六进制),所以您所说的a 的内容正是如此。它们重复是因为您的代码在每次循环迭代时都会写入 a 的内容。

【讨论】:

  • 我现在才注意到,还是谢谢你!
猜你喜欢
  • 1970-01-01
  • 2019-03-02
  • 2019-02-27
  • 2022-11-16
  • 2018-07-26
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2021-06-23
相关资源
最近更新 更多