Xalc is a hexadecimal calculator for embedded systems programmers, implemented as a pre-processor for Python expressions, with a console interface based on IPython.
Features:
- Mixed calculations with hex, decimal, binary and binary prefix literals
- Support for undecorated hex literals. Ambiguous literals can be forced to hex by either prefixing or suffixing with 'x'.
- Display in hex, decimal, binary (with bit position ruler) and binary prefixes (sizes)
- Simple bit mask construction
- Bit field extraction operator
- From IPython: Support for arbitrary Python expressions (minus the ones that conflict with the pre-processed syntax), command history, access to previous results with _* variables, etc.
The following "screenshot" demonstrates some of the features of Xalc. The real program displays the different bases in different colors, if your console supports that:
$ xalc In [1]: deadbeef 0xdeadbeef Out[1]: 3735928559 │ 28─╮ 24─╮ 20─╮ 16─╮ 12─╮ 8─╮ 4─╮ 0─╮ 0xdeadbeef │ 1101 1110 1010 1101 1011 1110 1110 1111 3 Gi + 490 Mi + 879 Ki + 751 In [2]: deadbeef $ m5t13 0xdeadbeef >> 5 & ((0x3fe0) >> 5) Out[2]: 503 │ 28─╮ 24─╮ 20─╮ 16─╮ 12─╮ 8─╮ 4─╮ 0─╮ 0x000001f7 │ 0000 0000 0000 0000 0000 0001 1111 0111 In [3]: _ ^ cafe _ ^ 0xcafe Out[3]: 51977 │ 28─╮ 24─╮ 20─╮ 16─╮ 12─╮ 8─╮ 4─╮ 0─╮ 0x0000cb09 │ 0000 0000 0000 0000 1100 1011 0000 1001 50 Ki + 777 In [4]: 7f000000 - 35000000x 0x7f000000 - 0x35000000 Out[4]: 1241513984 │ 28─╮ 24─╮ 20─╮ 16─╮ 12─╮ 8─╮ 4─╮ 0─╮ 0x4a000000 │ 0100 1010 0000 0000 0000 0000 0000 0000 1 Gi + 160 Mi In [5]: m2p0_5_8t9_29_31t31 (0x3|0x20|0x300|0x20000000|0x80000000) Out[5]: 2684355363 │ 28─╮ 24─╮ 20─╮ 16─╮ 12─╮ 8─╮ 4─╮ 0─╮ 0xa0000323 │ 1010 0000 0000 0000 0000 0011 0010 0011 2 Gi + 512 Mi + 803 In [6]: 2g | m12 0x80000000 | (0x1000) Out[6]: 2147487744 │ 28─╮ 24─╮ 20─╮ 16─╮ 12─╮ 8─╮ 4─╮ 0─╮ 0x80001000 │ 1000 0000 0000 0000 0001 0000 0000 0000 2 Gi + 4 Ki In [7]: -45 -45 Out[7]: -45 │ 28─╮ 24─╮ 20─╮ 16─╮ 12─╮ 8─╮ 4─╮ 0─╮ 0xffffffd3 │ 1111 1111 1111 1111 1111 1111 1101 0011
Install with pip:
pip install --upgrade xalc
Or by cloning the git repo and running:
python setup.py install
Run xalc
after installation.