# Module `src.utils.reconstructhash`

Onionr - Private P2P Communication

z-fill (zero fill) a string to a specific length intended for reconstructing block hashes

Expand source code

    '''
        Onionr - Private P2P Communication

        z-fill (zero fill) a string to a specific length
        intended for reconstructing block hashes
    '''
    from typing import Union
    '''
        This program is free software: you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation, either version 3 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.

        You should have received a copy of the GNU General Public License
        along with this program.  If not, see <https://www.gnu.org/licenses/>.
    '''

    def reconstruct_hash(hex_hash: Union[str, bytes],
                         length: int = 64) -> Union[str, bytes]:
        """Pad hash hex string with zeros, return result"""
        return hex_hash.zfill(length)

    def deconstruct_hash(hex_hash: Union[str, bytes]) -> Union[str, bytes]:
        """Remove leading zeros from hex hash, return result"""
        new_hash = ''
        ret_bytes = False
        try:
            hex_hash = hex_hash.decode()
            ret_bytes = True
        except AttributeError:
            pass

        c = 0
        for x in hex_hash:
            if x == '0':
                c += 1
            else:
                break
        new_hash = hex_hash[c:]

        if ret_bytes:

            new_hash = new_hash.encode()
        return new_hash

## Functions

`def deconstruct_hash(hex_hash)`

  Remove leading zeros from hex hash, return result

  Expand source code

      def deconstruct_hash(hex_hash: Union[str, bytes]) -> Union[str, bytes]:
          """Remove leading zeros from hex hash, return result"""
          new_hash = ''
          ret_bytes = False
          try:
              hex_hash = hex_hash.decode()
              ret_bytes = True
          except AttributeError:
              pass

          c = 0
          for x in hex_hash:
              if x == '0':
                  c += 1
              else:
                  break
          new_hash = hex_hash[c:]

          if ret_bytes:

              new_hash = new_hash.encode()
          return new_hash

`def reconstruct_hash(hex_hash, length=64)`

  Pad hash hex string with zeros, return result

  Expand source code

      def reconstruct_hash(hex_hash: Union[str, bytes],
                           length: int = 64) -> Union[str, bytes]:
          """Pad hash hex string with zeros, return result"""
          return hex_hash.zfill(length)