Skip to main content

baseconvert

Convert any rational number, from any (positive integer) base, to any (positive integer) base. Output numbers as tuple or string.

  • Any rational number

  • Arbitrary precision

  • Fractions

  • Recurring/repeating fractional digits.

  • Input numbers as tuple or string or number.

  • Output numbers as tuple or string.

MIT License (MIT) Copyright (c) 2024 BreadMakesYouFull MIT License (MIT) Copyright (c) 2016 squdle

github

Requires

  • Python 3

Install / Uninstall

Install:

pip install baseconvert

Optionally install GUI frontend and launch:

# Install with pyside6
pip install baseconvert[gui]
# Run GUI frontend
baseconvert

Uninstall:

pip uninstall baseconvert

Quickstart

# base(number, input_base, output_base)

>>> base((15, 15, 0, ".", 8), 16, 10)
(4, 0, 8, 0, '.', 5)

>>> base("FF0.8", 16, 10, string=True)
'4080.5'

>>> base("4080.5", 10, 16, string=True)
'FF0.8'

Or from command line

$ echo 4080.5 | python -m baseconvert -i 10 -o 16
FF0.8

$ python -m baseconvert -n 4080.5 -i 10 -o 16
FF0.8

Tuple representation

Numbers are represented as a sequence of digits. Each digit is a base-10 integer value. The radix point, which separates the integer and fractional parts, is denoted by a string period.

(int, int, int, ... , '.', ... , int, int, int)
(   integer part    , '.',  fractional part   )

String representation

String digits (after z the values are in ascending Unicode):

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

|  Value  | Representation |
|---------|----------------|
|  0 -  9 |    0  -  9     |
| 10 - 53 |    A  -  Z     |
| 36 - 61 |    a  -  z     |
| 62 +    | unicode 123 +  |

For bases higher than 61 it's recommended to use tuple representation.

Examples

# base(number, input_base, output_base)
>>> n = (15,15,".",0,8)
>>> base(n, 16, 10)
(2, 5, 5, '.', 0, 3, 1, 2, 5)
>>> base(n, 16, 10, string=True)
'255.03125'

>>> base("FF.08", 16, 10) == base((15,15,".",0,8), 16, 10)
True

# A callable BaseConverter object can also be created.
# This is useful for when several numbers need to be converted.

>>> b = BaseConverter(input_base=16, output_base=8)
>>> b("FF")
(3, 7, 7)
>>> b((15, 15))
(3, 7, 7)
>>> b("FF") == b((15,15))
True

>>> base(0.1, 3, 10, string=True)
'0.[3]'

Recurring digits

Recurring digits at the end of a fractional part will be enclosed by “[” and “]” in both string and tuple representation. This behavior can be turned off by setting the recurring argument of base or BaseConverter object to False.

>>> base("0.1", 3, 10, string=True)
'0.[3]'
>>> base("0.1", 3, 10, string=True, recurring=False)
'0.3333333333'

Max fractional depth

Integer parts are always of arbitrary size. Fractional depth (number of digits) can must be specified by setting the max_depth argument of base or a BaseConverter object (default 10).

>>> base("0.2", 10, 8)
(0, '.', 1, 4, 6, 3, 1, 4, 6, 3, 1, 4)
>>> base("0.2", 10, 8, max_depth=1)
(0, '.', 1)

Metadata

Release files for baseconvert 2.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for baseconvert 2.0.4
File Size Uploaded
baseconvert-2.0.4.tar.gz 14.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for baseconvert 2.0.4
File Interpreter ABI Platform
baseconvert-2.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 28.6 kB

Release files / baseconvert-2.0.4.tar.gz

Download URL baseconvert-2.0.4.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
06283fd418becc29b7b6420c983780f06f6f3a727f4cc4a4466d2de69c0230b1
BLAKE2b-256 checksum
How to use checksums
a75e95d4242f08306c18d323dfd60eb891eab264f700e28d7e2f04a308e2ad07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12

Release files / baseconvert-2.0.4-py3-none-any.whl

Download URL baseconvert-2.0.4-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
32ebaedefc6726362c104069adebd5c7a3126dbcf982a5da8c729e79ccb93553
BLAKE2b-256 checksum
How to use checksums
b85d615ca48e2ca46f3e0656ab57c98ee6a9ce444a4c514e82a35fb0b07b5ce2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page