python 진법 변환 int,bin,oct,hex의 원리

2382 단어 python진수 변환

원리


10진법 n진법은 모두 역제법을 사용할 수 있다. 10진법에 대해 n을 제거하는 연산을 하고 상이 0이 될 때까지 한 다음에 각 단계에서 얻은 나머지를 거꾸로 쓴다.
n진수 10진수: (예: 2진수 10진수)
101001 => 2^5 + 2^3 + 1 = 32 + 8 + 1 = 41
10111 => 2^4 + 2^2 + 2 + 1 = 16 + 4 + 2 +1 = 23
똑같이 유추해 보면, n진법 을 10진법 으로 바꾸는 것 은 2 를 밑바닥 으로 바꾸면 된다
중간 2진법을 사용하는 등 다른 방법도 있다.
예를 들어 10진법을 8진법 또는 16진법으로 바꾸고, 먼저 2진법으로 바꾼 다음에 8진법 또는 16진법으로 바꾸다
10진법 = > 2진법 = > 16진법
520=>10000001000(512+8)=>10000001000=>208(16진수)
1314 = > 10100100010(2진수) = > 2442(8진수) = > 522(16진수)
8진법 또는 16진법을 10진법으로 바꾸다
16진법 = > 2진법 = > 10진법
522 = > 0101 0010 0010 = > 1024 + 256 + 32 + 2 = 1280 + 34 = 1314 (10진수)

십진수


내장 함수bin,oct,hex를 사용하면 정수를 대응하는 2진법, 8진법, 16진법으로 변환할 수 있다.
정수만 변환할 수 있습니다. 되돌아오는 데이터는 문자열 형식입니다.

a = 12#  
print(a)# 12
b = 0b0101010111# 0b , 
print(b)# 343
c = 0o33#  0o 
print(c)# 27
d = 0x24#  0x 
print(d)# 36

a = 12 # 12 
print(bin(a))# 0b1100  bin 
print(oct(a))# 0o14  oct 
print(hex(a))# 0xc  hex 
print(type(bin(a)))# <class 'str'>
print(bin(0o1111))# 0b1001001001
print(bin(0xff))# 0b11111111
print(oct(0xff))# 0o377
print(hex(0b00011111)) # 0x1f
# print(bin(1.12))
# print(oct(1.12))
# print(hex(1.12))
# TypeError: 'float' object cannot be interpreted as an integer

기타 진수를 10진수로 변환하다


int 함수 사용
int(x,base=10)base는 진수입니다. 기본값은 10진수입니다.
int 함수는 다른 유형의 데이터를 정형으로 변환하는 데 자주 사용된다
참고:
x는 두 가지가 있습니다:str/int
1. x가 순수한 숫자라면base에 매개 변수를 전달할 수 없습니다. 그렇지 않으면 오류가 발생합니다.
2. x가str이면 베이스에 전삼을 주고 전하지 않으면 기본적으로 10이다.베이스에 매개 변수를 보내면 이 문자열이 왜 진수인지 생각하고 10진수로 변환합니다. 그러나 문자열의 수는 반드시 이 진수 규범에 부합되어야 합니다. 그렇지 않으면 오류가 발생합니다.

print(int(3.112))# 3
# print(int(3.112,8))# TypeError: int() can't convert non-string with explicit base
print(int('10',2))# 2
# print(int('22',2))# ValueError: invalid literal for int() with base 2: '22'
print(int('0xaaa',16))# 2730
print(int('0b111',2))# 7
print(int('0o1237',8))# 671
이python진법 변환 int,bin,oct,hex의 원리에 관한 이 글은 여기에 소개되었습니다. 더 많은 python진법 변환 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기