Pergunta

Estou trabalhando em um aplicativo que precisa aceitar dados postados de um formulário e processá -los. Uma etapa desse processo é descontar os dados que entram. Uma questão que estou enfrentando é que os dados que estou pegando do formulário são de natureza binária, por isso inclui sequências de fuga que eu preciso voltar aos caracteres. Isso é bastante trivial com caracteres como Tab e Newline, mas não consigo descobrir como fazer isso com valores hexadecimais e octal.

Aqui está um exemplo de alguns dados de entrada:

"blahblah\nblahblah\x20blahblah\037blahblah"

Quando for postado, parecerá algo como:

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

Na maioria das vezes, atualmente estou apenas passando pela string e digitalizando '%'. Então eu uso um sscanf para obter o valor do caractere escapado. Então, se tiver 92 anos, olho para o próximo personagem. Se for algo como 'n', apenas substituo os personagens por ' n' e continuo.

Minha pergunta é basicamente como posso examinar a corda para valores hexadecimal e octal? No exemplo acima, como eu poderia chegar ao %5C037 e substituir toda essa sequência pelo caractere ' 037' apropriado?

Como nota, tenho que fazer tudo isso porque os dados aceitos no formulário geralmente são transmitidos entre as chamadas do servidor e estou tentando montar um aplicativo de teste para permitir que um usuário veja o que está acontecendo com os dados.

Foi útil?

Solução

strtol deve fazer o que você precisa.

Outras dicas

Google para a implementação do URL Decody C e você encontrará muitas respostas, uma delas:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top