Login

Statistici

Membri: 188
Stiri: 1019
Linkuri: 24
Vizitatori: 1639838

Mirror MYLRo.org

Carti Linux direct de pe mirror-ul MYLRo.org
 
Afiseaza numarul in baze diferite E-mail
  • Currently 2.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Rating: 2.0/5 (1 votes cast)

Scris de Cypress   
Thursday, 22 November 2007
#!/bin/bash
##########################################################################
# Title      :    base.sh - print number to different bases
# Author     :    Heiner Steven (stv)
# Date       :    1995-03-07
# Requires   :    bc
# Category   :    Desktop
# SCCS-Id.   :    @(#) base.sh    1.3 04/02/18
##########################################################################
# Description
#
# Changes
# 21-03-95 stv    fixed error occuring with 0xb as input (0.2)
##########################################################################

PN=`basename "$0"`            # program name
VER='1.3'

Usage () {
    echo "$PN - print number to different bases, $VER (stv '95)
usage: $PN [number ...]

If no number is given, the numbers are read from standard input.
A number may be
    binary (base 2)        starting with 0b (i.e. 0b1100)
    octal (base 8)        starting with 0  (i.e. 014)
    hexadecimal (base 16)    starting with 0x (i.e. 0xc)
    decimal            otherwise (i.e. 12)" >&2
    exit 1
}

Msg () {
    for i
    do echo "$PN: $i" >&2
    done
}

Fatal () { Msg "$@"; exit 1; }

PrintBases () {
    # Determine base of the number
    for i
    do
    case "$i" in
        0b*)        ibase=2;;    # binary
        0x*|[a-f]*|[A-F]*)    ibase=16;;    # hexadecimal
        0*)            ibase=8;;    # octal
        [1-9]*)        ibase=10;;    # decimal
        *)
        Msg "illegal number $i - ignored"
        continue;;
    esac

    # Remove prefix, convert hex digits to uppercase (bc needs this)
    number=`echo "$i" | sed -e 's:^0[bBxX]::' | tr '[a-f]' '[A-F]'`

    # Convert number to decimal
    dec=`echo "ibase=$ibase; $number" | bc`
    case "$dec" in
        [0-9]*)    ;;            # number ok
        *)        continue;;        # error: ignore
    esac

    # Print all conversions in one line
    echo `bc <<!
        obase=16; "hex="; $dec
        obase=10; "dec="; $dec
        obase=8;  "oct="; $dec
        obase=2;  "bin="; $dec
!
    ` | sed -e 's: :    :g'

    done
}

while [ $# -gt 0 ]
do
    case "$1" in
    --)    shift; break;;
    -h)    Usage;;
    -*)    Usage;;
    *)    break;;            # first number
    esac
    shift
done

if [ $# -gt 0 ]
then
    PrintBases "$@"
else                    # read from stdin
    while read line
    do
    PrintBases $line
    done
fi

Comments
Add NewSearchRSS
Only registered users can write comments!

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.


 

Ultimele comentarii

Tips & Tricks

O arhivare mai buna cu gzip
Daca preferi ca arhivele tale gzip sa fie cat mai bine comprimate, foloseste comanda export GZIP=--best. Data viitoare cand vei arhiva cu gzip, comprimarea va fi facuta la cel mai inalt nivel.
 

Vizitatori Online

Avem 1 vizitator online

Doneaza pentru un banner MYLRo.org pe Distrowatch

Introdu o suma de macar 5$ (astfel incat suma donata sa fie cu ceva mai mare decat taxa de transfer PayPal) si trimite-mi un mail cu un link catre site-ul tau. Link-ul va fi afisat pe mainpage-ul MYLRo.org si 90% din paginile aferente site-ului pe intreaga perioada a hostarii bannerului de pe DistroWatch.