Autor Tópico: programacao em C - hexadecimal nao aparece no terminal  (Lida 3565 vezes)

Offline hax0r3x

  • Usuário Ubuntu
  • *
  • Mensagens: 24
    • Ver perfil
programacao em C - hexadecimal nao aparece no terminal
« Online: 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
« Última modificação: 22 de Dezembro de 2009, 23:27 por hax0r3x »

Offline alanwxu

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
Re: programacao em C - hexadecimal nao aparece no terminal
« Resposta #1 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
« Última modificação: 22 de Dezembro de 2009, 21:09 por alanwxu »

Offline hax0r3x

  • Usuário Ubuntu
  • *
  • Mensagens: 24
    • Ver perfil
Re: programacao em C - hexadecimal nao aparece no terminal
« Resposta #2 Online: 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

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

Offline HelderC

  • Usuário Ubuntu
  • *
  • Mensagens: 227
  • helderc at IRC.Freenode
    • Ver perfil
    • HelderC
Re: programacao em C - hexadecimal nao aparece no terminal
« Resposta #3 Online: 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);

Offline hax0r3x

  • Usuário Ubuntu
  • *
  • Mensagens: 24
    • Ver perfil
Re: programacao em C - hexadecimal nao aparece no terminal
« Resposta #4 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

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: programacao em C - hexadecimal nao aparece no terminal
« Resposta #5 Online: 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?!

Offline hax0r3x

  • Usuário Ubuntu
  • *
  • Mensagens: 24
    • Ver perfil
Re: programacao em C - hexadecimal nao aparece no terminal
« Resposta #6 Online: 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

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: programacao em C - hexadecimal nao aparece no terminal
« Resposta #7 Online: 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/

[]s