Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: hax0r3x em 21 de Dezembro de 2009, 23:08

Título: programacao em C - hexadecimal nao aparece no terminal
Enviado por: hax0r3x em 21 de Dezembro de 2009, 23:08
Olá!

Tenho aulas de C, uso o Codeblocks porem quando uso por ex.:

printf("\xDB");

ao compilar, no terminal nao aparece o caractere desejado...
sabem o que pode ser?

abs
Título: Re: programacao em C - hexadecimal nao aparece no terminal
Enviado por: alanwxu em 22 de Dezembro de 2009, 21:04
A unica coisa errada é que vc colocou % ao inves de \ (constante barra invertida)

da uma olhada aqui pra saber mais sobre constantes barra invertida: http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c340.html#c344.html (http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c340.html#c344.html)

flw
Título: Re: programacao em C - hexadecimal nao aparece no terminal
Enviado por: hax0r3x em 22 de Dezembro de 2009, 23:30
A unica coisa errada é que vc colocou % ao inves de \ (constante barra invertida)

da uma olhada aqui pra saber mais sobre constantes barra invertida: http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c340.html#c344.html (http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c340.html#c344.html)

flw

alan, desculpe-me.. digitei errado no post.. agora concertei.

printf("\xDB");

o que ocorre é que ao compilar, no terminal nao sai o caractere desejado e sim um ponto de exclamaçao..
isso serve para qualquer codigo hexadecimal.. como se o terminal nao reconhecesse, entendeu?

vlw
Título: Re: programacao em C - hexadecimal nao aparece no terminal
Enviado por: HelderC em 24 de Dezembro de 2009, 10:59
Você quer mostrar o caractere correspondente ao valor em hexa?

Isso funciona:

Código: [Selecionar]
printf("%x", 0xDB);
Título: Re: programacao em C - hexadecimal nao aparece no terminal
Enviado por: hax0r3x em 28 de Dezembro de 2009, 00:25
Olá HelderC

usei a funçao que informou, porem ao executar o arquivo compilado o que aparece é: db
e nao o caracter hex esperado. =/

testei no windows e funcionou com: printf("%xDB");
mas no ubuntu nao da certo
que droga!

será que nao é algo do terminal que nao reconhece hexadecimal?

vlw
Título: Re: programacao em C - hexadecimal nao aparece no terminal
Enviado por: fpissarra em 29 de Dezembro de 2009, 17:49
Olá HelderC

usei a funçao que informou, porem ao executar o arquivo compilado o que aparece é: db
e nao o caracter hex esperado. =/

testei no windows e funcionou com: printf("%xDB");
mas no ubuntu nao da certo
que droga!

será que nao é algo do terminal que nao reconhece hexadecimal?

vlw

O verdadeiro problema é que a página de código usada pelo Windows é diferente da usada pelo Linux (ou, pelo menos, pelo UBUNTU). No Windows a página Windows-1251 (extensão da ISO-8859.1) é default, no UBUNTU o que é default é UTF-8. Assim, o caracter do "euro", no Windows equivale ao código 0x88, já em UTF-8 equivale a mais de um byte: 0xE2, 0x82, 0xAC.

UTF-8 é um MBCS (MultiByte Character Set), já Windows-1251 é um SBCS (SingleByte Char Set). Isso significa que um caracter pode ser represetado por mais de 1 byte, em UTF-8 (consulte www.unicode.org).

No seu caso, acredito, que o printf correto seria:

Código: [Selecionar]
printf("\xD0\xAB");
Ajudei?!
Título: Re: programacao em C - hexadecimal nao aparece no terminal
Enviado por: hax0r3x em 30 de Dezembro de 2009, 22:36
Olá HelderC

usei a funçao que informou, porem ao executar o arquivo compilado o que aparece é: db
e nao o caracter hex esperado. =/

testei no windows e funcionou com: printf("%xDB");
mas no ubuntu nao da certo
que droga!

será que nao é algo do terminal que nao reconhece hexadecimal?

vlw

O verdadeiro problema é que a página de código usada pelo Windows é diferente da usada pelo Linux (ou, pelo menos, pelo UBUNTU). No Windows a página Windows-1251 (extensão da ISO-8859.1) é default, no UBUNTU o que é default é UTF-8. Assim, o caracter do "euro", no Windows equivale ao código 0x88, já em UTF-8 equivale a mais de um byte: 0xE2, 0x82, 0xAC.

UTF-8 é um MBCS (MultiByte Character Set), já Windows-1251 é um SBCS (SingleByte Char Set). Isso significa que um caracter pode ser represetado por mais de 1 byte, em UTF-8 (consulte www.unicode.org).

No seu caso, acredito, que o printf correto seria:

Código: [Selecionar]
printf("\xD0\xAB");
Ajudei?!


Olá fpissarra
sim, me esclareceu muito.
realmente é esse o problema que ocorre..
gostaria de pedir mais uma coisa se possivel:
sabe onde encontro os codigo em pagina unicode?
o que eu gostaria era migrar o desenvolvimento em C para linux, mas para isso preciso saber desses detalhes.

muitissimo obrigado
abs
Título: Re: programacao em C - hexadecimal nao aparece no terminal
Enviado por: fpissarra em 13 de Janeiro de 2010, 16:45
Citar
Olá fpissarra
sim, me esclareceu muito.
realmente é esse o problema que ocorre..
gostaria de pedir mais uma coisa se possivel:
sabe onde encontro os codigo em pagina unicode?
o que eu gostaria era migrar o desenvolvimento em C para linux, mas para isso preciso saber desses detalhes.

muitissimo obrigado
abs

Desculpe pela demora na resposta... você pode achar essa página interessante:

http://www.utf8-chartable.de/ (http://www.utf8-chartable.de/)

[]s