2009-10-23 21 views
2

我正在处理需要接受来自表单的发布数据并处理它的应用程序。这个过程的一个步骤就是不使用数据。我面临的一个问题是我从表单中抓取的数据本质上是二进制的,所以它包含了我需要转换回字符的转义序列。这对于像tab和newline这样的字符来说相当简单,但我无法弄清楚如何用十六进制和八进制值做到这一点。从转义字符串获取十六进制或八进制值

下面是一些输入数据的例子:当它被发布,它会看起来像

"blahblah\nblahblah\x20blahblah\037blahblah" 

"blahblah%5Cnblahblah%5Cx20blahblah%5C037blahblah" 

在大多数情况下,我目前只是通过串去并扫描'%'。然后我使用sscanf来获取转义字符的值。那么如果它是92,我看看下一个角色。如果它是'n',我只需用'\ n'替换这些字符并继续。

我的问题基本上是如何扫描字符串的十六进制和八进制值?在上面的例子中,我怎样才能到达%5C037,并用适当的'\ 037'字符替换整个序列?

作为一个说明,我必须这样做,因为表单上接受的数据通常在服务器调用之间传递,我试图组合一个测试应用程序以允许用户看到发生了什么数据。

回答

2

strtol应该做你需要的。

+0

这应该工作。虽然它并不真的给我提供理想的\ xxx表示,但它确实让我能够提取角色价值。 – bcasp 2009-10-23 14:19:37

相关问题