Convertendo bases numéricas
Publicado por Sandro Marcell 28/10/2007
[ Hits: 9.016 ]
Homepage: http://sanmarcell.wordpress.com
Simples script que faz conversão de bases numéricas, utilizando a interface dialog.
Obs.: São necessários o dialog e a calculadora bc.
#!/bin/bash --norc
#
# Convertendo bases numéricas.
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.: São necessários o dialog e a calculadora bc.
# Mensagens 'piscantes'! =)
Echo() { echo -e "\e[1;5m$*\e[m" ; }
# Programas necessários:
[[ $(which dialog) ]] || { Echo "É necessário o dialog."; exit 1; }
[[ $(which bc) ]] || { Echo "É necessária a calculadora BC."; exit 1; }
# Título do script:
TT="Conversor.sh - Convertendo valores em diferentes bases numéricas."
# Laço principal:
while :
do
# Menu na tela:
OPC=$(dialog --stdout --no-cancel --backtitle "$TT" --radiolist \
"Escolha uma opção: *Pressione <ESC> para sair." 0 0 0 \
"1" "Converter decimal para binário, octal e hexadecimal" ON \
"2" "Converter hexadecimal para binário, octal e decimal" OFF \
"3" "Converter binário para octal, decimal e hexadecimal" OFF \
"4" "Converter octal para binário, decimal e hexadecimal" OFF \
--and-widget --no-cancel --inputbox "Digite o valor:" 0 0 )
# <ESC> sai do script:
[[ $? == 255 ]] && break
# Capturando a opção escolhida (1-4):
IND=${OPC::1}
# Capturando o valor digitado (na base 16 tudo é maiúsculo):
VLR=$(echo ${OPC:1} | tr "a-f" "A-F")
# Se nenhum valor for especificado:
[[ $VLR ]] || {
Echo "-> Especifique um valor."
read -n 1 && continue ; }
# Iniciando conversões:
case $IND in
1) # Conversão de decimal.
# Base 10 somente 0-9:
grep -qs "[^0-9]" <(echo "$VLR")
[[ $? == 0 ]] && {
Echo "-> Na base 10 use de 0-9"
read -n 1 && continue ; }
# Convertendo...
B=$(bc -l <<< "obase = 2 ; ibase = 10 ; $VLR")
O=$(bc -l <<< "obase = 8 ; ibase = 10 ; $VLR")
H=$(bc -l <<< "obase = 16; ibase = 10 ; $VLR")
# Resultado:
dialog --backtitle "$TT" --no-cancel\
--title "Resultado ($VLR):" --msgbox "\
Binário = $B\n\
Octal = $O\n\
Hexadecimal = $H" 0 0
;;
2) # Conversão de hexadecimal
grep -qs "[^0-9A-F]" <(echo "$VLR")
[[ $? == 0 ]] && {
Echo "-> Na base 16 use de 0-9 e A-F"
read -n 1 && continue ; }
B=$(bc -l <<< "obase = 2 ; ibase = 16 ; $VLR")
O=$(bc -l <<< "obase = 8 ; ibase = 16 ; $VLR")
D=$(bc -l <<< "obase = 10; ibase = 16 ; $VLR")
dialog --backtitle "$TT" --no-cancel\
--title "Resultado ($VLR):" --msgbox "\
Binário = $B\n\
Octal = $O\n\
Decimal = $D" 0 0
;;
3) # Conversão de binário
grep -qs "[^0-1]" <(echo "$VLR")
[[ $? == 0 ]] && {
Echo "-> Na base 2 use de 0-1"
read -n 1 && continue ; }
O=$(bc -l <<< "obase = 8 ; ibase = 2 ; $VLR")
D=$(bc -l <<< "obase = 10; ibase = 2 ; $VLR")
H=$(bc -l <<< "obase = 16; ibase = 2 ; $VLR")
dialog --backtitle "$TT" --no-cancel\
--title "Resultado ($VLR):" --msgbox "\
Octal = $O\n\
Decimal = $D\n\
Hexadecimal = $H" 0 0
;;
4) # Conversão de octal
grep -qs "[^0-7]" <(echo "$VLR")
[[ $? == 0 ]] && {
Echo "-> Na base 8 use de 0-7"
read -n 1 && continue ; }
B=$(bc -l <<< "obase = 2 ; ibase = 8 ; $VLR")
D=$(bc -l <<< "obase = 10; ibase = 8 ; $VLR")
H=$(bc -l <<< "obase = 16; ibase = 8 ; $VLR")
dialog --backtitle "$TT" --no-cancel\
--title "Resultado ($VLR):" --msgbox "\
Binário = $B\n\
Decimal = $D\n\
Hexadecimal = $H" 0 0
;;
*) break
esac
done
# Fim
Atualizando o banco de dados do ClamAV sem freshclam
Instalando o Firefox e o Thunderbird
Limpeza automática de pastas com contagem de arquivos
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









