2016-06-02 7 views
0

파이썬 라이브러리 pyasn1.type.univ.BitString에서 prettyIn 메서드를 사용하려고했습니다.pyasn1.error.PyAsn1Error : 알 수없는 비트 식별자

이 메서드는 문자열을 취하지 만, 파이썬 대화 형 셸에서 전달한 내용은 예외 pyasn1.error.PyAsn1Error: Unknown bit identifier을 발생시킵니다. 나는 Google에서 그 방법에 대한 소스 코드를보고, 여기 내가 찾은 것입니다 :

def prettyIn(self, value): 
    r = [] 
    if not value: 
     return() 
    elif isinstance(value, str): 
     if value[0] == '\'': 
      if value[-2:] == '\'B': 
       for v in value[1:-2]: 
        if v == '0': 
         r.append(0) 
        elif v == '1': 
         r.append(1) 
        else: 
         raise error.PyAsn1Error(
          'Non-binary BIT STRING initializer %s' % (v,) 
          ) 
       return tuple(r) 
      elif value[-2:] == '\'H': 
       for v in value[1:-2]: 
        i = 4 
        v = int(v, 16) 
        while i: 
         i = i - 1 
         r.append((v>>i)&0x01) 
       return tuple(r) 
      else: 
       raise error.PyAsn1Error(
        'Bad BIT STRING value notation %s' % value 
        )     
     else: 
      for i in value.split(','): 
       j = self.__namedValues.getValue(i) 
       if j is None: 
        # THIS IS THE PROBLEMATIC LINE 
        raise error.PyAsn1Error(
         'Unknown bit identifier \'%s\'' % i 
         ) 
       if j >= len(r): 
        r.extend([0]*(j-len(r)+1)) 
       r[j] = 1 
      return tuple(r) 
    elif isinstance(value, (tuple, list)): 
     r = tuple(value) 
     for b in r: 
      if b and b != 1: 
       raise error.PyAsn1Error(
        'Non-binary BitString initializer \'%s\'' % (r,) 
        ) 
     return r 
    elif isinstance(value, BitString): 
     return tuple(value) 
    else: 
     raise error.PyAsn1Error(
      'Bad BitString initializer type \'%s\'' % (value,) 
      ) 

사람은이 방법에 걸리는 문자열 어떤 종류의 어떤 생각을 가지고 있습니까? 이 방법은 디버깅해야하는 프로그램에서 사용되며 변경할 수 없습니다. 나는 현재 그것에 일하고 있어요으로

감사합니다 당신의 도움이

답변

-1

Drummmer 쿠분투 그냥이 질문을보고, 나는 당신을 알 수 있습니다.

http://transit.iut2.upmf-grenoble.fr/doc/python-pyasn1/pyasn1-tutorial.html#1.1.6

BIT STRING의 :: = '1010111011110001010110101101101 0110101010000111101010111111110'B 서명의 BIT STRING :: ='의미 AF01330CD932093392100B39FF00DE0'H

, univ.BitString (" 'AF01330CD932093392100B39FF00DE0' H ")

+0

이 답변의 의미는 무엇입니까? 그것은 OP가 가지고있는 문제를 해결합니까? – luk2302

+0

나는 그가 어떤 종류의 문자열 univ.BitString을 요구하는지 묻고 있었다. 나는이 정보를 발견 한 예제와 링크를 그에게 주었다. – NoOne