Skip to main content

Convert numbers between bases.

Project description

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)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

baseconvert-2.0.4.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

baseconvert-2.0.4-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file baseconvert-2.0.4.tar.gz.

File metadata

  • Download URL: baseconvert-2.0.4.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for baseconvert-2.0.4.tar.gz
Algorithm Hash digest
SHA256 06283fd418becc29b7b6420c983780f06f6f3a727f4cc4a4466d2de69c0230b1
MD5 7b743b8aac3bb9e783ada5121eaa6230
BLAKE2b-256 a75e95d4242f08306c18d323dfd60eb891eab264f700e28d7e2f04a308e2ad07

See more details on using hashes here.

File details

Details for the file baseconvert-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: baseconvert-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for baseconvert-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 32ebaedefc6726362c104069adebd5c7a3126dbcf982a5da8c729e79ccb93553
MD5 84fe32144b06fe3b90ff01af779d2396
BLAKE2b-256 b85d615ca48e2ca46f3e0656ab57c98ee6a9ce444a4c514e82a35fb0b07b5ce2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page