BCAL(1)

NAME
bcal - Perform storage conversions and calculations.

SYNOPSIS
bcal [-c N] [-s bytes] [-h]
[N unit]

DESCRIPTION
bcal (Byte CALculator) is a command-line utility to help with numerical calculations involving data storage units, addressing, base conversions etc.

Features

  * convert to IEC/SI standard data storage units
  * show the address in bytes
  * show address as LBA:OFFSET
  * convert CHS to LBA and vice versa
  * show binary, decimal and hex representation of a number
  * custom sector size, max heads/cylinder and max sectors/track
  * minimal dependencies

bcal follows Ubuntu's standard unit conversion and notation policy. Refer to: https://wiki.ubuntu.com/UnitsPolicy

OPERATIONAL NOTES

N unit: N can be decimal or '0x' prefixed hex value. Unit can be B/KiB/MiB/GiB/TiB/kB/MB/GB/TB following Ubuntu policy. As all of these tokens are unique, unit is case-insensitive.

Fractional bytes do not exist, because they can't be addressed. bcal shows the floor value of non-integer bytes.

Hex and decimal inputs are recognized for all inputs. Binary inputs are supported only with '-c'. This is a provision to convert a binary number to decimal/hex before using it as an input to other operations. No octal support.

Syntax: Prefix hex inputs with '0x', binary inputs with '0b'.

Default values:
  - sector size: 0x200 (512)
  - max heads per cylinder: 0x10 (16)
  - max sectors per track: 0x3f (63)

CHS and LBA inputs for format conversion are hyphen separated. The syntax is:
  - LBA: 'lLBA-MAX_HEAD-MAX_SECTOR' [NOTE: LBA starts with 'l' (case ignored)]
  - CHS: 'cC-H-S-MAX_HEAD-MAX_SECTOR' [NOTE: CHS starts with 'c' (case ignored)]
    Any unspecified value, including the one preceding the first '-' to the one following the last '-', is considered '0'.

No negative numbers allowed. Input limits are 'unsigned long long' and 'double'.

OPTIONS

-c=N
    Show decimal, binary and hex representation of N. Use prefix '0b' for binary and '0x' for hex. N must be non-negative.

-f=FORMAT
    Convert CHS to LBA or LBA to CHS. FORMAT is hyphen-separated representation of LBA or CHS. Decimal or '0x' prefixed hex values are accepted. LBA: lLBA-MAX_HEAD-MAX_SECTOR (starts with 'l')
    CHS: cC-H-S-MAX_HEAD-MAX_SECTOR (starts with 'c') Omitted values, (other than MAX_HEAD and MAX_SECTOR) are considered 0. Default MAX_HEAD: 16, default MAX_SECTOR: 63.

-s=bytes
    Sector size in bytes. Default value is 512. Decimal and '0x' prefixed hex values accepted.

-h  Show program help and exit.

EXAMPLES

1.  Convert storage capacity to other units and get address, LBA.

    $ bcal 20140115 b
    $ bcal 0x1335053 B
    $ bcal 0xaabbcc kb
    $ bcal 0xdef Gib
    Note that the units are case-insensitive.

2.  Convert storage capacity, set sector size to 4096 to calculate LBA.

    $ bcal 0xaabbcc kb -s 4096

3.  Convert LBA to CHS.

    $ bcal -f l500
    $ bcal -f l0x600-18-0x7e
    $ bcal -f l0x300-0x12-0x7e

4.  Convert CHS to LBA.

    $ bcal -f c10-10-10
    $ bcal -f c0x10-0x10-0x10
    $ bcal -f c0x10-10-2-0x12
    $ bcal -f c-10-2-0x12
    $ bcal -f c0x10-10--0x12

5.  Show binary, decimal and hex representations of a number.

    $ bcal -c 20140115
    $ bcal -c 0b1001100110101000001010011
    $ bcal -c 0x1335053

AUTHORS
Arun Prakash Jana <engineerarun@gmail.com>

HOME
https://github.com/jarun/bcal

REPORTING BUGS
https://github.com/jarun/bcal/issues

LICENSE
Copyright © 2016 Arun Prakash Jana <engineerarun@gmail.com>

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.