在Python中有任何罐装的Python方法将整数(或长)转换为二进制字符串吗?
谷歌上有无数的dec2bin()函数…但我希望我可以使用内置函数/库。
在Python中有任何罐装的Python方法将整数(或长)转换为二进制字符串吗?
谷歌上有无数的dec2bin()函数…但我希望我可以使用内置函数/库。
当前回答
我发现了一个用矩阵运算把十进制转换成二进制的方法。
import numpy as np
E_mat = np.tile(E,[1,M])
M_order = pow(2,(M-1-np.array(range(M)))).T
bindata = np.remainder(np.floor(E_mat /M_order).astype(np.int),2)
Eis输入的十进制数据,M是二进制顺序。bindata为输出二进制数据,格式为1 × M二进制矩阵。
其他回答
备选方案总结:
n=42
assert "-101010" == format(-n, 'b')
assert "-101010" == "{0:b}".format(-n)
assert "-101010" == (lambda x: x >= 0 and str(bin(x))[2:] or "-" + str(bin(x))[3:])(-n)
assert "0b101010" == bin(n)
assert "101010" == bin(n)[2:] # But this won't work for negative numbers.
贡献者包括John Fouhy, Tung Nguyen, mVChr, Martin Thoma。还有马丁·彼得斯。
下面是使用divmod()函数的简单解决方案,该函数返回提示符和除法的结果,但不包含分数。
def dectobin(number):
bin = ''
while (number >= 1):
number, rem = divmod(number, 2)
bin = bin + str(rem)
return bin
计算二进制数:
print("Binary is {0:>08b}".format(16))
计算一个数的十六进制小数:
print("Hexa Decimal is {0:>0x}".format(15))
计算所有的二进制直到16::
for i in range(17):
print("{0:>2}: binary is {0:>08b}".format(i))
要计算十六进制小数,直到17
for i in range(17):
print("{0:>2}: Hexa Decimal is {0:>0x}".format(i))
##as 2 digit is enogh for hexa decimal representation of a number
作为参考:
def toBinary(n):
return ''.join(str(1 & int(n) >> i) for i in range(64)[::-1])
这个函数可以将一个正整数一样大18446744073709551615,表示为字符串“1111111111111111111111111111111111111111111111111111111111111111”。
它可以被修改为一个更大的整数,尽管它可能不像"{0:b}".format()或bin()那么方便。
一个简单的方法是使用字符串格式,请参阅本页。
>> "{0:b}".format(10)
'1010'
如果你想要一个固定长度的二进制字符串,你可以使用这个:
>> "{0:{fill}8b}".format(10, fill='0')
'00001010'
如果需要使用two的补码,那么可以使用下面的行:
'{0:{fill}{width}b}'.format((x + 2**n) % 2**n, fill='0', width=n)
其中n是二进制字符串的宽度。