gpt4 book ai didi

c - 使用 printf 的格式字符串打印可变数量的字节

转载 作者:行者123 更新时间:2023-12-02 01:51:56 25 4
gpt4 key购买 nike

目标:使用单个格式说明符打印可变数量的字节。

环境: x86-64 Ubuntu 20.04.3 LTS 在 x86-64 主机上的 VM 中运行。

示例:

%kmagic 成为我正在寻找的格式说明符,它通过从堆栈中弹出它们并将它们添加到输出中来打印 k 字节。然后,对于指向内存中保存字节 0xde 0xad 0xbe 0xef%rsp 区域,我想要 printf("堆栈上的下 4 个字节:%4magic") 打印堆栈上的下 4 个字节:deadbeef

到目前为止我尝试过的:

  1. %khhx,不幸的是,这只会导致 k-1 空格后跟两个十六进制字符(一个数据字节)。
  2. %kx,我希望将其打印为一个数字的 k/2 字节。这只打印 8 个十六进制字符(4 个字节),前面有 k - 8 个空格。

打印的非空白字符数与格式说明符的长度匹配,即%hhx的预期长度为2,这也是打印的非空白字符数。 %x 也是如此,它期望打印 8 个字符。

问题:是否有可能获得所需的行为?如果是这样,怎么办?

最佳答案

Is it possible to get the desired behavior? If so, how?

不存在 printf 格式说明符来执行您想要的操作。

Is it possible

编写您自己的 printf 实现来支持您想要的功能。使用implementation-specific tools创建您自己的 printf 格式说明符。您可以从linux kernel printk %*phN format speciifer获取灵感.

关于c - 使用 printf 的格式字符串打印可变数量的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70134527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com