Mais sobre binário

Vamos ver quem pode me ajudar com isso. Quer converter uma string ASCII para binário. É um problema relativamente simples. Em python, resolvi assim:

def toBin(intNum):
s=""
for i in [2 ** (7-n) for n in range(8)]:
s+={True:"1",False:"0"}[intNum>=i]
intNum=intNum%i
return s
print " ".join([toBin(ord(i)) for i in list("Teste")])

Não sei se é uma solução elegante, mas como fiz em menos de dois minutos, fiquei com essa mesmo. Existe um jeito mais prático? Um módulo que faça isso? E em outra linguagem?

(Não, eu não programo em binário 😉 )

Elcio: Elcio é sócio fundador da Visie Padrões Web. Pioneiro no uso e divulgação dos padrões do W3C no Brasil, Elcio já treinou equipes de dezenas de empresas como Globo.com, Terra, Petrobras, iG e Locaweb. Além disso, tem dirigido as equipes da Visie no desenvolvimento de projetos web para marcas como Brastemp, Itaú Unibanco, Johnson & Johnson e Rede Globo.

View Comments (15)

  • Oi, tenho uma dúvida. Sou programador, porém, desatualizado, e não mexo em binário.
    Na verdade quero saber como eu devo fazer para transg=formar fotos que não sei como transformei-as em bin, e agora eu quero reverter.

    grato.

  • Bom é quando existe suporte nativo a essas coisas, como ocorre em JS:
    var c = [], s = 'teste';
    for(var p in s) c[c.length] = s.charCodeAt(p).toString(2);
    alert(c);

    só testei em '8-bit char', já em unicode talvez dê piti.

  • @Paulo,
    Isso mesmo, na época fiz a função apenas para converter números, postei ela aqui pois é uma função recursiva, por isso achei interessante compartilhar a idéia.
    Abraços

  • Desculpe o flood elcio.. é que enviei 2 vezes sem querer e depois só vi que não cade tudo... então fiz um arquivinho .cpp com o código

    em C++ eu fiz uma classe q converte int para string binaria… lembrando q um char é um int de 8 bits(ASCII)

    link para o arquivo: http://felipetonello.com/TBinario.cpp

  • em C eu fiz uma classe q converte int para string binaria... lembrando q um char é um int de 8 bits(ASCII)


    #include "vcl\vcl.h"
    #include "string.h"
    #pragma hdrstop

    class TBinario {

    public:
    char * __fastcall IntToStrBin(unsigned short int num);
    };
    //---------------------------------------------------------------------------
    char * __fastcall TBinario::IntToStrBin(unsigned short int num)
    {
    unsigned short int BYTE[8] = {
    0x01,0x02,0x04,0x08,
    0x10,0x20,0x40,0x80
    };

    unsigned short int cont,bit=7;
    static char buf[10]; //para armazenar a string de números binários.
    for( cont = 0; cont

  • em C eu fiz uma classe q converte int para string binaria... lembrando q um char é um int de 8 bits(ASCII)

    #include "vcl\vcl.h"
    #include "string.h"
    #pragma hdrstop

    class TBinario {

    public:
    char * __fastcall IntToStrBin(unsigned short int num);
    };
    //---------------------------------------------------------------------------
    char * __fastcall TBinario::IntToStrBin(unsigned short int num)
    {
    unsigned short int BYTE[8] = {
    0x01,0x02,0x04,0x08,
    0x10,0x20,0x40,0x80
    };

    unsigned short int cont,bit=7;
    static char buf[10]; //para armazenar a string de números binários.
    for( cont = 0; cont