在python中将十进制转换为二进制
python中是否有任何模块或函数可用于将十进制数转换为等效的二进制数?在python中将十进制转换为二进制,python,binary,decimal,Python,Binary,Decimal,python中是否有任何模块或函数可用于将十进制数转换为等效的二进制数? 我可以使用int(“[binary_value]”,2)将二进制转换为十进制,因此有没有办法在不编写代码的情况下进行反向转换?所有数字都存储在二进制中。如果您想要给定数字的二进制文本表示,请使用bin(i) 我同意@aaronasterling的回答。但是,如果希望将非二进制字符串转换为int,则可以使用规范算法: def decToBin(n): if n==0: return '' else:
我可以使用int(“[binary_value]”,2)将二进制转换为十进制,因此有没有办法在不编写代码的情况下进行反向转换?所有数字都存储在二进制中。如果您想要给定数字的二进制文本表示,请使用
bin(i)
我同意@aaronasterling的回答。但是,如果希望将非二进制字符串转换为int,则可以使用规范算法:
def decToBin(n):
if n==0: return ''
else:
return decToBin(n/2) + str(n%2)
很简单。您还可以使用numpy模块中的函数
from numpy import binary_repr
也可以处理前导零:
Definition: binary_repr(num, width=None)
Docstring:
Return the binary representation of the input number as a string.
This is equivalent to using base_repr with base 2, but about 25x
faster.
For negative numbers, if width is not given, a - sign is added to the
front. If width is given, the two's complement of the number is
returned, with respect to that width.
如果前面没有0b:
"{0:b}".format(int)
从Python 3.6开始,您还可以使用,---:
为了完成:如果要将定点表示转换为其二进制等效形式,可以执行以下操作:
from decimal import *
a = Decimal(3.625)
a_split = (int(a//1),a%1)
fr = a_split[1]
str(int(fr*2)) + str(int(2*(fr*2)%1)) + ...
你可以阅读解释
int(bin(10),2)
产生10
int(decToBin(10))
产生101
和int(decToBin(10),2)
产生5。此外,您的函数使用uuu future uuuu import division或python的命中递归限制3@aaron,后一点可以通过切换到/
(截断除法)来解决;前者,通过切换在返回中求和的两个字符串的顺序
。无论如何,递归在这里没有任何意义(bin(n)[2://code>——或者如果您被困在一些旧版本的Python上,则使用while
循环会更好!)。这太棒了!它也可以用lambda的方式:binary=lambda n:“如果n==0,那么binary(n/2)+str(n%2)
@AzizAlto我得到了一辆满载着大量e-
的数字的巴士,在递归调用dectobin中也是如此。@Timo lol显然你在使用Python3,只需将binary(n/2)
更改为binary(n//2)
那么您将无法获得总线负载:-)-1-不要返回int。另外,dec\u to\u bin(-1)
给出ValueError:int()的无效文本,基数为10:'b1'
您能解释一下[2:]吗?请尝试bin(2)
。你不会得到“10”。您将获得“0b10”。与hex(2)
('0x2')相同的可能凹坑。因此,除了前两个字符,您需要所有字符。因此,您需要一个从前两个字符开始的片段。@zero\u cool如果test\u var=“Hello world”那么test\u var[2:]=“llo world”@Wallace:因为二进制和十进制是如何显示数字的选择,而不是数字本身的一部分dec_to_bin(0b101)==101,这是毫无意义的,因为您可以应用于101的任何操作都与原始的5没有任何关系-例如,dec_to_bin(0b101)+1==102
。以下是使用前导零的打印格式:“{0:08b}”。format(my_int)
@WaldoBronchart这很酷。你能给我解释一下,有前导零是怎么工作的吗?这是内置的,你得到了0+8或0+16的前导零吗?我得到了以下错误:TypeError:non-empty format string传递给object。
对于我来说,python 3.5.2 TypeError:non-empty format string传递给object.\uuuuu format\uh-现在我得到了,你的意思是:``>>“{0:b}”。format(47)-->'101111'您还可以确定它将以这种方式表示的位数:>>“{:0>15b}”。格式(3)
>>>>'000000000000011'与链接的问题“转换为二进制字符串”不同,我认为这个问题是不同的。我来这里是想把一个整数转换成一个对应的二进制数组(或布尔数组),我认为这是一个明智的答案。@SanjayManohar发现的纯字符串处理算法可以用来做你想做的事情。误导。bin()返回二进制字符串,而不是二进制字符串
n=int(input('please enter the no. in decimal format: '))
x=n
k=[]
while (n>0):
a=int(float(n%2))
k.append(a)
n=(n-a)/2
k.append(0)
string=""
for j in k[::-1]:
string=string+str(j)
print('The binary no. for %d is %s'%(x, string))
"{0:b}".format(int)
f"{int:b}"
from decimal import *
a = Decimal(3.625)
a_split = (int(a//1),a%1)
fr = a_split[1]
str(int(fr*2)) + str(int(2*(fr*2)%1)) + ...