web-dev-qa-db-ja.com

Pythonで10進数を2進数に変換

10進数をそれと等価な2進数に変換するために使用できるpythonのモジュールまたは関数はありますか?私はint( '[binary_value]'、2)を使ってバイナリを10進数に変換することができます。

117
Paul

すべての数値は2進数で保管されています。与えられた数をバイナリでテキスト表現したい場合はbin(i)を使います。

>>> bin(10)
'0b1010'
>>> 0b1010
10
195
aaronasterling
"{0:#b}".format(my_int)
64
Matt Williamson

正面に0bがない場合

"{0:b}".format(int)

Python 3.6からは、 形式の文字列リテラルまたはf-string 、---を使うこともできます。 PEP

f"{int:b}"
45
user136036
def dec_to_bin(x):
    return int(bin(x)[2:])

それはとても簡単です。

31
schmidmt

あなたは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.
10
flonk

@ aaronasterlingの回答に同意します。ただし、intにキャストできる非バイナリ文字列が必要な場合は、正規のアルゴリズムを使用できます。

def decToBin(n):
    if n==0: return ''
    else:
        return decToBin(n/2) + str(n%2)
8
inspectorG4dget
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))
4
harry

完成のために:固定小数点表現をそれと等価なバイナリ表現に変換したい場合は、次の操作を実行できます。

  1. 整数部分と小数部分を取得します。

    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
    
  2. 小数部をバイナリ表現に変換します。これを達成するには、2を連続して掛けます。

    fr = a_split[1]
    str(int(fr*2)) + str(int(2*(fr*2)%1)) + ...
    

説明を読むことができます ここ

1
Kalouste