Pular para o conteúdo

imprimir meu for [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. imprimir meu for [RESOLVIDO]

Enviado em 13/11/2013 - 17:10h

Alguem pode me ajudar com isso? eh o seguinte.. preciso que o valor que eu digite seja impresso de acordo com os valores que mencionei no case..

exemplo:
o valor digitado foi: 12adc
o valor impresso: 0001 0010 1010 1101 1100

Obs: sem que eu preciso fazer múltiplos case..
no mais obrigado!


#! /bin/bash

echo "--:: PROJETO INTEGRADOR ::--"
echo "--:: CONVERSAO DE BASE HEXA PARA BIN ::--"
echo ""
echo "Autor: Eduardo Neto"
echo " Jadson Reis"
echo ""
echo "Digite um valor equivalente a Hexadecimal: "
read hexa

v1=$(echo $hexa| cut -c1)

i=0
for i in $v1
do

case $v1 in

0) a=0000 ;;
1) a=0001 ;;
2) a=0010 ;;
3) a=0011 ;;
4) a=0100 ;;
5) a=0101 ;;
6) a=0110 ;;
7) a=0111 ;;
8) a=1000 ;;
9) a=1001 ;;
A|a) a=1010 ;;
B|b) a=1011 ;;
C|c) a=1100 ;;
D|d) a=1101 ;;
E|e) a=1110 ;;
F|f) a=1111 ;;
G|g) a="xx" ;;
H|h) a="xx" ;;
I|i) a="xx" ;;
J|j) a="xx" ;;
L|l) a="xx" ;;
M|m) a="xx" ;;
N|n) a="xx" ;;
O|o) a="xx" ;;
P|p) a="xx" ;;
Q|q) a="xx" ;;
R|r) a="xx" ;;
S|s) a="xx" ;;
T|t) a="xx" ;;
U|u) a="xx" ;;
V|v) a="xx" ;;
X|x) a="xx" ;;
Z|z) a="xx" ;;
W|w) a="xx" ;;
K|k) a="xx" ;;
Y|y) a="xx" ;;
"") a="xx" ;;
*) a="xx";;

esac
done

if [ $a == "xx" ]; then

echo "O valor digitado não corresponde a um valor Hexadecimal"
echo ""
echo ""

else

echo "O valor hexadecimal digitado em Binario eh: $a"
echo ""
echo ""

fi

Responder tópico

2. Use o bc

Enviado em 13/11/2013 - 23:02h

echo "ibase=16; obase=2; 12ADC" | bc
10010101011011100


3. Re: imprimir meu for [RESOLVIDO]

Enviado em 13/11/2013 - 23:54h

tem que ser manual msm.. sem função BC ou DC.. se fosse assim ja tava pronto.. em 8 linhas apenas... kk! msm assim obrigado!

4. Re: imprimir meu for [RESOLVIDO]

Enviado em 14/11/2013 - 10:10h

eduardonetoh escreveu:

tem que ser manual msm.. sem função BC ou DC.. se fosse assim ja tava pronto.. em 8 linhas apenas... kk! msm assim obrigado!
Tenta assim =):


#!/bin/bash
while [ $# -ne 0 ]; do
bin=''
hex=$(printf "%d" 0x$1)

while ((hex != 0)); do
(( bit = hex % 2 ))
(( hex = hex / 2 ))
bin=${bit}$bin
done

echo "$bin"
shift
done
$ ./test.sh 12ADC 1F C0CA
10010101011011100
11111
1100000011001010

5. Re: imprimir meu for [RESOLVIDO]

Enviado em 14/11/2013 - 15:04h

coloca isso no meu codigo.. quero ver como fica!

6. Re: imprimir meu for [RESOLVIDO]

Enviado em 14/11/2013 - 17:46h

Esse trecho:

G|g) a="xx" ;;
H|h) a="xx" ;;
I|i) a="xx" ;;
J|j) a="xx" ;;
L|l) a="xx" ;;
M|m) a="xx" ;;
N|n) a="xx" ;;
O|o) a="xx" ;;
P|p) a="xx" ;;
Q|q) a="xx" ;;
R|r) a="xx" ;;
S|s) a="xx" ;;
T|t) a="xx" ;;
U|u) a="xx" ;;
V|v) a="xx" ;;
X|x) a="xx" ;;
Z|z) a="xx" ;;
W|w) a="xx" ;;
K|k) a="xx" ;;
Y|y) a="xx" ;;
"") a="xx" ;;

não é necessário, pois vc colocando apenas:


*) aa="xx";;


já resolve o seu problema! (Isso eu ja tinha feito em sua penúltima dúvida).

O script do @smarcell já resolve tudo numa linha de comando só, sem precisar a execução do "read". Recomendo utilizá-lo :-)

7. Re: imprimir meu for [RESOLVIDO]

Enviado em 18/11/2013 - 02:27h

#! /bin/bash

echo "--:: PROJETO INTEGRADOR ::--"
echo "--:: CONVERSAO DE BASE HEXA PARA BIN ::--"
echo "--:: CONVERSÃO MAXIMA 07 (sete) DIGITOS ::--"
echo ""
echo "Autor: Eduardo Neto"
echo " Jadson Reis"
echo ""
echo "Digite um valor equivalente a Hexadecimal: "
read hexa

v[6]=$(echo $hexa | cut -c1)
v[5]=$(echo $hexa | cut -c2)
v[4]=$(echo $hexa | cut -c3)
v[3]=$(echo $hexa | cut -c4)
v[2]=$(echo $hexa | cut -c5)
v[1]=$(echo $hexa | cut -c6)
v[0]=$(echo $hexa | cut -c7)

i=0
while [ $i -le 6 ]; do

case ${v[$i]} in

0) v[$i]=0000 ;;
1) v[$i]=0001 ;;
2) v[$i]=0010 ;;
3) v[$i]=0011 ;;
4) v[$i]=0100 ;;
5) v[$i]=0101 ;;
6) v[$i]=0110 ;;
7) v[$i]=0111 ;;
8) v[$i]=1000 ;;
9) v[$i]=1001 ;;
A|a) v[$i]=1010 ;;
B|b) v[$i]=1011 ;;
C|c) v[$i]=1100 ;;
D|d) v[$i]=1101 ;;
E|e) v[$i]=1110 ;;
F|f) v[$i]=1111 ;;
"") echo "" ;;
*) echo "O valor digitado nao corresponde a um valor Hexadecimal" ; exit 1;;

esac

let i++
done
echo -n "O valor hexadecimal digitado em Binario eh: "

i=0
while [ $i -le 6 ];
do
echo -n ${v[6-$i]}
let i++
done
echo ""
echo "Para uma nova consulta execute novamente o programa !!"
echo ""

8. Re: imprimir meu for [RESOLVIDO]

Enviado em 18/11/2013 - 02:27h

resolvido.. nao tirei um 10 no projeto mais fiquei com 9.. vlw galera.. pela força!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder