shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Conversão de Binario para Decimal e Vice-Versa


From: address@hidden
Subject: Re: Conversão de Binario para Decimal e Vice-Versa
Date: Tue, 29 Dec 2009 22:17:16 -0000
User-agent: eGroups-EW/0.82

Olá Michael ! Tudo joia ? E os cubos ? Continua perdendo tempo com isso ?

Como não gosto disso , acabei estudando shell e agora vou te ajudar !
kkkkkkkkkk
 
Abraço e depois me paga uma cerveja

PS Estou utilizando um arquivo contendo a tabela ASCII-1
veja aqui http://pastebin.com/m635fb559

O código abaixo faz o que você solicitou, sem perfumaria.
 


nhanha@nhanhaserver :~$ cat txt2bin.sh
#!/bin/sh
if [ $2 ]; then echo "usage $0 <string>"; exit 1; fi
if [ ! "$1" ]; then echo "usage $0 <string>"; exit 1; fi
echo $1

QTD=$(echo -n "$1" |wc -c)
COUNT=0
while [ ${COUNT} -lt ${QTD} ] ; do
CHAR=$(expr ${COUNT} + 1)
LETRA=$(echo "${1}" | cut -c ${CHAR})
if [ "${LETRA}" = " " ] ; then LETRA="(sp)"; fi
ASCII=$(grep "^${LETRA} " ascii.txt | awk '{print $2}')
BIN=$(echo "obase=2;${ASCII}" | bc)
LENBIN=$(echo -n ${BIN} | wc -c)
while [ ${LENBIN} -lt 8 ]; do
       BIN="0${BIN}"
       LENBIN=$(echo -n ${BIN} | wc -c)
done
if [ ${BIN} = "00000000" ]; then BIN="NAO TEM NA MINHA TABELA ASCII-1"; fi
echo -e "${COUNT}\t${LETRA}\t${ASCII}\t${BIN}"
COUNT=$(expr ${COUNT} + 1)
done
echo "\"${1}\" tem ${QTD} caracteres"
nhanha@nhanhaserver :~$ sh ./txt2bin.sh "Teste de script de txt para ASCII 
binário"
Teste de script de txt para ASCII binário
0      T        84      01010100
1      e        101     01100101
2      s        115     01110011
3      t        116     01110100
4      e        101     01100101
5      (sp)     32      00100000
6      d        100     01100100
7      e        101     01100101
8      (sp)     32      00100000
9      s        115     01110011
10     c        99      01100011
11     r        114     01110010
12     i        105     01101001
13     p        112     01110000
14     t        116     01110100
15     (sp)     32      00100000
16     d        100     01100100
17     e        101     01100101
18     (sp)     32      00100000
19     t        116     01110100
20     x        120     01111000
21     t        116     01110100
22     (sp)     32      00100000
23     p        112     01110000
24     a        97      01100001
25     r        114     01110010
26     a        97      01100001
27     (sp)     32      00100000
28     A        65      01000001
29     S        83      01010011
30     C        67      01000011
31     I        73      01001001
32     I        73      01001001
33     (sp)     32      00100000
34     b        98      01100010
35     i        105     01101001
36     n        110     01101110
37     á                NAO TEM NA MINHA TABELA ASCII-1
38     r        114     01110010
39     i        105     01101001
40     o        111     01101111
"Teste de script de txt para ASCII binário" tem 41 caracteres
nhanha@nhanhaserver :~$
Se quiser também pegar caracteres especiais, acentuados etc, faça as 
modificações necessárias.


--- Em address@hidden, Michael Costa <linuxajuda@...> escreveu
>
> Oá lista! Imaginem o seguinte cenário, gostaria de escrever um texto e
> convertê-lo para binário.
> 
> Eu já tenho a tabela ASCII, então a minha idéia seria pegar a letra O por
> exemplo e convertê-la para decimal segundo a tabela ASCII, ficaria 79, em
> seguida, converteria este 79 em binario, resultando em 1001111. Ótimo! É
> isto que preciso.
> 
> Preciso apenas automatizar tudo isto.
> 
> O que tenho ?
> 
> Tabela ASCII
> Comandos para conversão (Dec to Bin (echo 'obase=2;79' | bc) e Bin to Dec
> (echo 'ibase=2;01001111' |bc)).
> 
> A dúvida é: como automatizar tudo isto ?
> 
> A idéia é escrever um texto (incluindo a pontuação, espaços, etc) e ter a
> saída em código binário. Seria interessante ele acrescentar os 0 à esquerda
> para que fique sempre com 8 caracteres. E claro, o código inverso para
> converter do binário para string.
> 
> Podem me orientar ?
> 
> Abraços!
> 
> Michael
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]