Convert decimal to binary in python
本问题已经有最佳答案,请猛点这里访问。
在python中,我是否可以使用任何模块或函数将十进制数转换为其二进制等价物?我可以使用int("[binary_value]",2)将二进制转换为十进制,那么有什么方法不用自己编写代码就可以进行反转呢?
所有数字都以二进制形式存储。如果要用二进制表示给定数字,请使用
1 2 3 4 | >>> bin(10) '0b1010' >>> 0b1010 10 |
1 | "{0:#b}".format(my_int) |
号
前面没有0B:
1 | "{0:b}".format(int) |
从python 3.6开始,还可以使用格式化字符串literal或f-string,--pep:
1 | f"{int:b}" |
。
1 2 | def dec_to_bin(x): return int(bin(x)[2:]) |
。
就这么简单。
还可以使用numpy模块中的函数
1 | from numpy import binary_repr |
也可以处理前导零:
1 2 3 4 5 6 7 8 9 10 | 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. |
。
我同意@aaronasterling的回答。但是,如果希望将非二进制字符串强制转换为int,则可以使用规范算法:
1 2 3 4 | def decToBin(n): if n==0: return '' else: return decToBin(n/2) + str(n%2) |
1 2 3 4 5 6 7 8 9 10 11 12 | 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)) |
。
为了完成:如果要将定点表示转换为其二进制等效形式,可以执行以下操作:
得到整数和小数部分。
1 2 3 | from decimal import * a = Decimal(3.625) a_split = (int(a//1),a%1) |
转换二进制表示中的小数部分。以使其连续乘以2。
1 2 | fr = a_split[1] str(int(fr*2)) + str(int(2*(fr*2)%1)) + ... |
。
你可以在这里读到解释。