복붙노트

[PYTHON] 숫자를 고정 길이로 이진으로 변환

PYTHON

숫자를 고정 길이로 이진으로 변환

1에서 127 사이의 임의의 숫자가 있다고 가정 해 봅시다. 숫자를 이진수로 변경하고 해당 코드에서 0b를 제거합니다.

key_one= int(raw_input("Enter key (0 <= key <= 127): "))

if key_one in range(128):
    bin_key_one=bin(key_one)[2:]
print bin_key_one
else:
    print "You have to enter key (0 <= key <= 127)"

이제 필자는 필요에 따라 0으로 시작 부분을 패딩하여 7 자 길이로 만들고 싶습니다. 나는 for 루프를 사용해야한다고 생각하지만, 누군가 그것을 어떻게 할 수 있는지 보여 줄 수 있습니까?

해결법

  1. ==============================

    1.아니야.

    아니야.

    >>> '{0:07b}'.format(12)
    '0001100'
    
  2. ==============================

    2.그래서 파이썬에는 문자열 메소드 인 .zfill ()이 있습니다.

    그래서 파이썬에는 문자열 메소드 인 .zfill ()이 있습니다.

    >>> '1'.zfill(7)
    '0000001'
    >>> '10010'.zfill(7)
    '0010010'
    
  3. ==============================

    3.파이썬 3.6의 새로운 f-strings를 사용하면 다음을 할 수 있습니다.

    파이썬 3.6의 새로운 f-strings를 사용하면 다음을 할 수 있습니다.

    key_one = int(input("Enter key (0 <= key <= 127): "))
    
    if key_one in range(128):
        bin_key_one = f'{key_one:07b}'
        print(bin_key_one)
    else:
        print("You have to enter key (0 <= key <= 127)")
    
  4. ==============================

    4.이 시도:

    이 시도:

    for i in range(1, 127):
    '0'*(7-len(bin(i)[2:]))+bin(i)[2:]
    
  5. from https://stackoverflow.com/questions/3252528/converting-a-number-to-binary-with-a-fixed-length by cc-by-sa and MIT license