python输入二进制数_在Python中有没有使用二进制数的简单方法?

您可以将int子类化并编写一个__new__,将所需输入解析为整数的二进制。我现在有char和一个字符串,支持0和1。在

现在,您可以将它作为一个整数,以及它的所有二进制运算方法。只有使用这些方法时,它才会一直转换为整数。因此,您必须使用魔术函数(双下划线或dunders)覆盖所有这些方法,以继续返回二进制类。这可能是重复的,但是使用其他一些python魔术,它可以非常简洁地完成。在class Binary(int):

def __new__(self, val):

if type(val) is str:

if len(val) > 1:

val = int(val, 2)

else:

val = ord(val)

return super().__new__(self, val)

dunders_binary = "and rand add radd sub rsub mul rmul lshift rlshift " + \

"rshift rrshift and rand or ror xor rxor"

for dunder in ("__%s__" % s for s in dunders_binary.split()):

locals()[dunder] = lambda self, other, __f=dunder: \

self.__class__(getattr(super(), __f)(other))

dunders_unary = "neg pos invert"

for dunder in ("__%s__" % s for s in dunders_unary.split()):

locals()[dunder] = lambda self, __f=dunder: \

self.__class__(getattr(super(), __f)())

def __repr__(self):

return bin(self)

def __str__(self):

return bin(self)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值