Login

Statistici

Membri: 192
Stiri: 1032
Linkuri: 24
Vizitatori: 1657440

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

Foloseste aceeasi partitie SWAP in Linux si Windows
Daca esti in lipsa de spatiu si doresti sa folosesti aceeasi partitie swap si in Linux si in Windows, poti sa faci urmatorul truc:
1. Formateaza partitia ca si partitie DOS si creaza fisierul SWAP Windows pe ea, dar nu rula inca sistemul de operare.
2. Booteaza in Linux si s alveaza partitia intr-un fisier. Presupunand ca partitia swap se afla pe /dev/hda5, vom face
dd if=/dev/hda5 of=/etc/dosswap
3. Comprima fisierul dosswap:
gzip -9 /etc/dosswap
4. Adauga urmatoarele in fisierul /etc/rc pentru a pregati si instala swap-ul in Linux. XXXXX este numarul de blocuri din partitia swap:
mkswap /dev/hda5 XXXXX
swapon -av   

5. Adauga partitia in /etc/fstab
 

Vizitatori Online

Avem 3 vizitatori si 1 membru 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.