Source code for pyswitcheo.datatypes.fixed8

# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""Implementation for custom datatypes to interact with the blockchain."""
from decimal import Decimal
from pyswitcheo.crypto_utils import reverse_hex

import logging

logger = logging.getLogger(__name__)


[docs]class Fixed8(object): """Fixed point representation of a given input number.""" def __init__(self, value): """.""" self.__value = float(Decimal(value).quantize(Decimal("1.00000000")))
[docs] def to_hex(self): output = hex(round(self.__value * 1e+8))[2:] return "0" * (16 - len(output)) + output
[docs] def to_reverse_hex(self): """Get a reverse hex representation of a given Fixed8.""" return reverse_hex(self.to_hex())
@property def value(self): """Return the underlying value of fixed 8.""" return str(self.__value)
[docs] @staticmethod def num_to_fixed_8(number, size=8): """Convert a given number to Fixed8 representation. Args: number (float/int) : Input which needs to be converted to a Fixed8 representation. Returns: Given number in Fixed8 representation. Raises: TypeError in case size param is not an integer """ if size % 1 != 0: raise TypeError( "size param must be a whole integer. Received {size}".format(size=size) ) return Fixed8(number).to_reverse_hex()[: size * 2]