c - 有没有办法将字符串格式化为输入,以便 C 将其解释为十六进制?

标签 c

我知道您可以使用 printf("\xab") 告诉 C 将值解释为十六进制。如果您将“\xab”作为输入输入到 C 程序,它将把它解释为字符 -x-a-b。有没有办法将 printf 样式的格式化信息嵌入到原始输入中?

最佳答案

不,这完全取决于读取字符的代码如何解释它们。您不能通过给程序提供文本来神奇地从外部强制程序执行其他操作。我想缓冲区溢出攻击有点像反例,但那是相当极端的。

许多程序使用例如strtol()自动支持 0x(十六进制)和 0 作为前缀(浏览器地址栏是这一意想不到的功能的一个常见示例)。例如,在 Windows 中,您可以执行此操作以 ping 此站点:

C:\>ping 0xc6fcce10

Pinging 198.252.206.16 with 32 bytes of data:

其中 0xc6fcce10 是单个 32 位十六进制数形式的 IP 地址。

关于c - 有没有办法将字符串格式化为输入,以便 C 将其解释为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274814/

相关文章:

c - C 中的标志顺序

c - 传递给嵌套函数的字符串文字指针问题

c++ - 这个洗牌算法有什么问题吗?

c - linux 汇编程序如何乘除 64 位数字?

C 计算一个数组中的 int 在另一个数组中出现的频率

c - XML 解析启动处理程序中的指针值已更改

c - 我如何用 C 编写 GNURadio 应用程序?

c++ - 如何在 C/C++ 中声明 16 位二进制字符?

CRC ECMA-182 引用

c - 打印2D Matrix文件,在MPI c程序中得到错误的数据