기본 2 이진 숫자 문자열을 다음과 같이 int로 변환하고 싶습니다.
>>> '11111111'.fromBinaryToInt()
255
파이썬에서 이것을 할 수있는 방법이 있습니까?
답변
내장 int
함수를 사용하여 입력 번호의 기본, 즉 2
이진수에 전달하십시오 .
>>> int('11111111', 2)
255
답변
파이썬 대화 형 인터페이스에서 0b11111111 을 입력 하십시오 .
>>> 0b11111111
255
답변
이를 수행하는 또 다른 방법은 bitstring
모듈 을 사용하는 것입니다 .
>>> from bitstring import BitArray
>>> b = BitArray(bin='11111111')
>>> b.uint
255
부호없는 정수는 부호있는 정수와 다릅니다.
>>> b.int
-1
이 bitstring
모듈은 요구 사항은 아니지만 입력을 비트에서 다른 형식으로 바꾸거나 조작 할 수있는 성능이 뛰어난 방법이 많이 있습니다.
답변
base와 함께 int를 사용하는 것이 올바른 방법입니다. int가 기본을 차지하기 전에이 작업을 수행했습니다. 기본적으로 이진수를 십진수로 변환하는 기본 방식의 목록 이해에 적용되는 감소입니다 (예 : 110 = 2 ** 0 * 0 + 2 ** 1 * 1 + 2 ** 2 * 1).
add = lambda x,y : x + y
reduce(add, [int(x) * 2 ** y for x, y in zip(list(binstr), range(len(binstr) - 1, -1, -1))])
답변
무대 뒤에서 무슨 일이 일어나고 있는지 알고 싶다면 여기로 가십시오.
class Binary():
def __init__(self, binNumber):
self._binNumber = binNumber
self._binNumber = self._binNumber[::-1]
self._binNumber = list(self._binNumber)
self._x = [1]
self._count = 1
self._change = 2
self._amount = 0
print(self._ToNumber(self._binNumber))
def _ToNumber(self, number):
self._number = number
for i in range (1, len (self._number)):
self._total = self._count * self._change
self._count = self._total
self._x.append(self._count)
self._deep = zip(self._number, self._x)
for self._k, self._v in self._deep:
if self._k == '1':
self._amount += self._v
return self._amount
mo = Binary('101111110')
답변
재귀 파이썬 구현 :
def int2bin(n):
return int2bin(n >> 1) + [n & 1] if n > 1 else [1]
답변
python3.6 이상을 사용하는 경우 f-string을 사용하여 변환을 수행 할 수 있습니다.
이진수를 십진수로 :
>>> print(f'{0b1011010:#0}')
90
>>> bin_2_decimal = int(f'{0b1011010:#0}')
>>> bin_2_decimal
90
이진수에서 8 진수로 등
>>> f'{0b1011010:#o}'
'0o132' # octal
>>> f'{0b1011010:#x}'
'0x5a' # hexadecimal
>>> f'{0b1011010:#0}'
'90' # decimal
콜론으로 분리 된 2 개의 정보에주의하십시오.
이런 식으로 콜론의 오른쪽을 변경하여 {binary, octal, 16 진수, decimal}을 {binary, octal, 16 진수, decimal}로 변환 할 수 있습니다.
:#b -> converts to binary
:#o -> converts to octal
:#x -> converts to hexadecimal
:#0 -> converts to decimal as above example
8 진수 / 16 진수 / 10 진수를 갖도록 콜론의 왼쪽을 변경해보십시오.