code: def long_to_bytes(lnum, padmultiple=1):
      
  
      # source: http://stackoverflow.com/a/14527004/1231454
  
      if lnum == 0:
          return b'\0' * padmultiple
      elif lnum < 0:
          raise ValueError("Can only convert non-negative numbers.")
      s = hex(lnum)[2:]
      s = s.rstrip('L')
      if len(s) & 1:
          s = '0' + s
      s = binascii.unhexlify(s)
      if (padmultiple != 1) and (padmultiple != 0):
          filled_so_far = len(s) % padmultiple
          if filled_so_far != 0:
              s = b'\0' * (padmultiple - filled_so_far) + s
      return s
docs: Packs the lnum (which must be convertable to a long) into a
         byte string 0 padded to a multiple of padmultiple bytes in size. 0
         means no padding whatsoever, so that packing 0 result in an empty
         string.  The resulting byte string is the big-endian two's
         complement representation of the passed in long.