def bin(val, align=0): if isinstance(val, int): return builtins.bin(val).lstrip('0b').zfill(align) elif type(val) in (bytes, bytearray, list, tuple): return ''.join([builtins.bin(b).lstrip('0b').zfill(8) for b in val]).zfill(align) else: raise TypeError('Int, bytes or bytearray object is needed')
def bin(num: object) -> str: """ A zero padding aware verison of the builin bin function that converts ints to string representations of binary numbers. """ global builtins, _SignedInt, _UnsignedInt if isinstance(num, _UnsignedInt): cls = type(num) body = builtins.bin(num).lstrip("0b") width = cls._bit_width_ # u0 returns only '0b'm this is for consistency's sake, no outlier cases return f"{cls.__name__}(0b{'0'*(width - len(body)) + body})" elif isinstance(num, _SignedInt): cls = type(num) body = builtins.bin(num).lstrip("-0b") width = cls._bit_width_ - 1 return f"{cls.__name__}({'-0b' if num < 0 else '0b'}{'0'*(width - len(body)) + body})" else: return builtins.bin(num)
def integer_to_ascii(num: int) -> str: """ Перевод числа в текст. @param num: сумма символов в ASCII @returns res: бинарная строка. """ res = builtins.str(builtins.bin(num)).replace('0b', '') counter = len(res) % 8 for i in range(8 - counter): res = '0' + res return res
lambda *args, **kwargs: wrap(builtins.abs)(*args, **kwargs), builtins.abs) all = functools.update_wrapper( lambda *args, **kwargs: builtins.all(*args, **kwargs), builtins.all) all._ = functools.update_wrapper( lambda *args, **kwargs: wrap(builtins.all)(*args, **kwargs), builtins.all) any = functools.update_wrapper( lambda *args, **kwargs: builtins.any(*args, **kwargs), builtins.any) any._ = functools.update_wrapper( lambda *args, **kwargs: wrap(builtins.any)(*args, **kwargs), builtins.any) ascii = functools.update_wrapper( lambda *args, **kwargs: builtins.ascii(*args, **kwargs), builtins.ascii) ascii._ = functools.update_wrapper( lambda *args, **kwargs: wrap(builtins.ascii)(*args, **kwargs), builtins.ascii) bin = functools.update_wrapper( lambda *args, **kwargs: builtins.bin(*args, **kwargs), builtins.bin) bin._ = functools.update_wrapper( lambda *args, **kwargs: wrap(builtins.bin)(*args, **kwargs), builtins.bin) bool = functools.update_wrapper( lambda *args, **kwargs: builtins.bool(*args, **kwargs), builtins.bool) bool._ = functools.update_wrapper( lambda *args, **kwargs: wrap(builtins.bool)(*args, **kwargs), builtins.bool) breakpoint = functools.update_wrapper( lambda *args, **kwargs: builtins.breakpoint(*args, **kwargs), builtins.breakpoint) breakpoint._ = functools.update_wrapper( lambda *args, **kwargs: wrap(builtins.breakpoint)(*args, **kwargs), builtins.breakpoint) bytearray = functools.update_wrapper( lambda *args, **kwargs: builtins.bytearray(*args, **kwargs),
Others read the low bytes first ==> little endian. BOM: byte order marker """ # defining functions (the hard part !!!): b2d = lambda x: int(x, 2) # binary str to decimal # int. # inverse of bin(x) # gonna need it # getting rid of the annoying leading '0b' import builtins bin = lambda x: builtins.bin(x)[2:] # or: bin=lambda x:f"{x:b}" # (formatted str doesn't add 0b) # Now the only easy encoding !!! : def utf32(text, be): # BE stands for # big endianness ls = [] for c in text: cp = ord(c) # Python recognizes # Unicode characters # and gives their # code points s = bin(cp).zfill(32)
def bin(x=None): if x is None: return bpipe(bin) else: return builtins.bin(x)