programacao em C - hexadecimal nao aparece no terminal

Iniciado por hax0r3x, 21 de Dezembro de 2009, 23:08

tópico anterior - próximo tópico

hax0r3x

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

alanwxu

#1
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

flw

hax0r3x

Citação de: alanwxu online 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

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

HelderC

Você quer mostrar o caractere correspondente ao valor em hexa?

Isso funciona:

printf("%x", 0xDB);

hax0r3x

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

fpissarra

Citação de: hax0r3x online 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

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:

printf("\xD0\xAB");

Ajudei?!

hax0r3x

Citação de: fpissarra online 29 de Dezembro de 2009, 17:49
Citação de: hax0r3x online 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

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:

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

fpissarra

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/

[]s