🌟 Hop between number bases with ease! 🌟
RadixHopper is a Python library for efficient radix-based number system conversions, specializing in cyclic fractions handling, for arbitary bases with arbitary digits (defaults to 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
digit-set).
- 🔢 Convert numbers between radices 2 to 36 out-of-the-box, and more with custom digits!
- 🧑🔬 Support for scientific notation
- 🦅 Arbitary precision operations, by leveraging fractions
- 🖥️ Support for
0x
,0o
and0b
format - 🔄 Handle cyclic fractions with grace
- 🚀 Fast evaluations with conversion buffering
- 📓 Jupyter notebook support
- 🎨 Intuitive CLI interface
Sprinkle some magic into your Python environment:
pip install radixhopper
from radixhopper import RadixNumber
# Create a RadixNumber instance from a string in base 10
num = RadixNumber("3.14", base=10)
# Convert it to base 2
result = num.to(base=2)
# Print the representation in base 2
print(f"{result!r}") # or simply `>>> result` or print(repr(result))
# >>> RadixNumber(number=11.0[01000111101011100001], representation_base=2, digits=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ, case_sensitive=False, fraction=(157/50))
# Access the string representation directly
print(result)
# >>> 11.0[01000111101011100001]
# Perform operations
num2 = RadixNumber("1.1", base=2) # Represents 1.5 in base 10
sum_result = num + num2 # Operations default to Fraction representation
print(sum_result) # >>> 100.[10100011110101110000]
print(sum_result.to(base=10)) # >>> 4.64
radixhopper --num 3.14 --base-from 10 --base-to 2
or simply
radixhopper 3.14 10 2
We welcome contributions! Please check our Issues page for open tasks or suggest new features.
radixhopper
is distributed under the terms of the MIT license.
* . . * * . . . * ..
. * . ✨ . . * . *
*. * . . * . * . . *
. . * . ✨ . . . .
. *. . . * . * . . *
* . . . . . . . .
. . . ✨ * . . * *
. * * . . * . * . .
. . . . . .
* . . * . * . . *
Happy hopping! ✨🐰✨