Programing

밑이 2 진 문자열을 int로 변환

lottogame 2020. 3. 31. 08:12
반응형

밑이 2 진 문자열을 int로 변환


기본 2 이진 숫자 문자열을 다음과 같이 int로 변환하고 싶습니다.

>>> '11111111'.fromBinaryToInt()
255

파이썬에서 이것을 할 수있는 방법이 있습니까?


내장 int함수를 사용하여 입력 번호의 기본, 즉 2이진수에 전달하십시오 .

>>> int('11111111', 2)
255

다음은 python2python3에 대한 설명서입니다 .


파이썬 대화 형 인터페이스에서 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] 

참고 URL : https://stackoverflow.com/questions/8928240/convert-base-2-binary-number-string-to-int

반응형