Получить шестнадцатеричное или восьмеричное значение из экранированной строки - PullRequest
2 голосов
/ 23 октября 2009

Я работаю над приложением, которое должно принимать опубликованные данные из формы и обрабатывать их. Одним из шагов этого процесса является удаление данных, которые поступают. Одна проблема, с которой я сталкиваюсь, заключается в том, что данные, которые я получаю из формы, являются двоичными по своей природе, поэтому в них содержатся escape-последовательности, которые мне нужно превратить в символы. Это довольно тривиально с такими символами, как tab и newline, но я не могу понять, как это сделать с шестнадцатеричными и восьмеричными значениями.

Вот пример некоторых входных данных:

"blahblah\nblahblah\x20blahblah\037blahblah"

Когда сообщение будет опубликовано, оно будет выглядеть примерно так:

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

По большей части я сейчас просто просматриваю строку и сканирую «%». Затем я использую sscanf, чтобы получить значение экранированного символа. Тогда, если это 92, я смотрю на следующий персонаж. Если это что-то вроде «n», я просто заменяю символы на «\ n» и продолжаю.

Мой вопрос в основном, как я могу просмотреть строку для шестнадцатеричных и восьмеричных значений? В приведенном выше примере, как я могу добраться до% 5C037 и заменить всю эту последовательность соответствующим символом '\ 037'?

Как примечание, я должен сделать все это, потому что данные, принятые в форме, обычно передаются между серверными вызовами, и я пытаюсь собрать тестовое приложение, чтобы позволить пользователю видеть, что происходит с данные.

Ответы [ 2 ]

4 голосов
/ 23 октября 2009

Google для реализации URL декодирования C, и вы найдете много ответов, один из них:

http://www.icosaedro.it/apache/urldecode.c

2 голосов
/ 23 октября 2009

strtol должен делать то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...