ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 2진수, 8진수, 10진수, 16진수 변환
    언어/파이썬 & 장고 2019. 12. 8. 17:14

    먼저 파이썬은 기본 10진수이기 때문에 다른 진수는 아래와 같이 접두어가 붙습니다.

    • 2진수: 0b
    • 8진수: 0o
    • 16진수: 0x

    10진수에서 2진수, 8진수, 16진수 변환

    bin(), oct(), hex() 내장함수 사용

    파이썬에서 제공하는 내장함수를 사용하면 쉽게 변환 할 수 있습니다.

    value = 60
    
    b = bin(value)
    o = oct(value)
    h = hex(value)
    
    print(b)
    print(o)
    print(h)
    
    
    # 0b111100
    # 0o74
    # 0x3c


    결과는 전부 문자열 타입입니다.

    format() 내장함수 사용

    forrmat() 내장함수를 사용하여 위 결과와 마찬가지로 변환할 수 있습니다.

    value = 60
    
    
    b = format(value, '#b')
    o = format(value, '#o')
    h = format(value, '#x')
    
    print(b)
    print(o)
    print(h)
    
    
    # 0b111100
    # 0o74
    # 0x3c


    두 번째 인자에서 #을 제거하면 접두어가 빠진 결과로 나오게 됩니다. 변환된 값 그 자체만 필요하게 될 경우, 유용하게 사용할 수 있습니다.

    value = 60
    
    
    b = format(value, 'b')
    o = format(value, 'o')
    h = format(value, 'x')
    
    print(b)
    print(o)
    print(h)
    
    
    # 111100
    # 74
    # 3c

    다른 진수 형태에서 10진수로 변환

    2진수, 8진수, 16진수에서 10진수로 변환하는 방법입니다. 여기서 변환하고자 하는 진수의 타입은 문자열이며 반환되는 10진수 결과는 정수 타입입니다.

    b = int('0b111100', 2)
    o = int('0o74', 8)
    h = int('0x3c', 16)
    
    print(b)
    print(o)
    print(h)
    
    
    # 60
    # 60
    # 60


    여기서 int 함수의 첫 번째 인자는 변환하고자 하는 진수이고 두 번째 인자는 첫 번째 인자의 진수 형태입니다. 만약 진수 형태를 잘못 입력하면 에러가 발생합니다.

    다른 진수 형태에서 다른 진수로 변환

    2진수에서 8진수로 변환하는 것과 같이 변환하는 방법입니다. 여기서 변환하고자 하는 진수의 타입은 정수이며 반환되는 타입은 문자열입니다.

    o=oct(0b111100)
    h=hex(0b111100)
    s=str(0b111100)
    
    print(o)
    print(h)
    print(s)
    
    # 0o74
    # 0x3c
    # 60

    문자열.format() 를 사용한 진수 변환

    문자열 타입에서 제공하는 format() 메소드를 사용하여 변환하는 방법입니다.

    s = "2진수: {0:#b}, 8진수: {0:#o}, 10진수: {0:#d}, 16진수: {0:#x}".format(60)
    
    print(s)
    
    # 2진수: 0b111100, 8진수: 0o74, 10진수: 60, 16진수: 0x3c


    위에서 설명한 내장함수 format()과 마찬가지로 #을 제거하면 접두어가 빠진 형태로 반환됩니다.

    s = "2진수: {0:b}, 8진수: {0:o}, 10진수: {0:d}, 16진수: {0:x}".format(60)
    
    print(s)
    
    # 2진수: 111100, 8진수: 74, 10진수: 60, 16진수: 3c


    댓글