我正在开发一个需要接受来自表单的发布数据并对其进行处理的应用程序。此过程的一个步骤是对输入的数据进行转义。我面临的一个问题是,我从表单中获取的数据本质上是二进制的,因此它包含转义序列,我需要将其转为字符。对于制表符和换行符之类的字符来说,这是相当琐碎的,但是我不知道如何使用十六进制和八进制值来实现。

这是一些输入数据的示例:

"blahblah\nblahblah\x20blahblah\037blahblah"

发布后,它将类似于:
"blahblah%5Cnblahblah%5Cx20blahblah%5C037blahblah"

在大多数情况下,我目前仅浏览字符串并扫描'%'。然后,我使用sscanf来获取转义字符的值。然后如果是92,我看下一个字符。如果类似“n”,我只需将字符替换为“\ n”并继续。

我的问题基本上是如何在字符串中扫描十六进制和八进制值?在上面的示例中,如何获取%5C037并将整个序列替换为适当的'\ 037'字符?

需要注意的是,我必须做所有这一切,因为表单上接受的数据通常在服务器调用之间传递,并且我试图将一个测试应用程序放在一起,以使用户可以查看数据发生了什么。

最佳答案

strtol 应该做您所需要的。

10-04 22:53
查看更多