[python] 파이썬에서 정수를 이진수로 변환

정수를 이진으로 변환하기 위해이 코드를 사용했습니다.

>>> bin(6)
'0b110'

그리고 ‘0b’를 지울 때 나는 이것을 사용합니다 :

>>> bin(6)[2:]
'110'

내가 보여주고 싶은 경우에 무엇을 할 수 600000110대신 110?



답변

>>> '{0:08b}'.format(6)
'00000110'

서식 문자열의 일부를 설명하기 위해 :

  • {} 변수를 문자열에 넣습니다
  • 0 인수 위치 0에서 변수를 사용합니다.
  • :이 변수에 대한 형식화 옵션을 추가합니다 (그렇지 않으면 10 진수를 나타냄 6).
  • 08 왼쪽에 숫자가 0 인 숫자를 8 자리로 형식화
  • b 숫자를 이진 표현으로 변환

Python 3.6 이상의 버전을 사용하는 경우 f- 문자열을 사용할 수도 있습니다.

>>> f'{6:08b}'
'00000110'


답변

또 다른 아이디어 :

>>> bin(6)[2:].zfill(8)
'00000110'

문자열 보간을 통한 더 짧은 방법 ( Python 3.6+ ) :

>>> f'{6:08b}'
'00000110'


답변

조금 꼬집는 방법 …

>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'


답변

그냥 형식 함수를 사용하십시오

format(6, "08b")

일반적인 형태는

format(<the_integer>, "<0><width_of_string><format_specifier>")


답변

eumiro의 답변이 더 좋지만, 다양성을 위해 이것을 게시하고 있습니다.

>>> "%08d" % int(bin(6)[2:])
00000110


답변

.. 또는 항상 8 자리 여야하는지 확실하지 않은 경우 매개 변수로 전달할 수 있습니다.

>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'


답변

numpy.binary_repr(num, width=None) 마법의 폭이있다

위에 링크 된 문서의 관련 예제 :

>>> np.binary_repr(3, width=4)
'0011'

입력 숫자가 음수이고 너비가 지정되면 2의 보수가 반환됩니다.

>>> np.binary_repr(-3, width=5)
'11101'