파이썬 라이브러리 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,)
)
는
사람은이 방법에 걸리는 문자열 어떤 종류의 어떤 생각을 가지고 있습니까? 이 방법은 디버깅해야하는 프로그램에서 사용되며 변경할 수 없습니다. 나는 현재 그것에 일하고 있어요으로
감사합니다 당신의 도움이
이 답변의 의미는 무엇입니까? 그것은 OP가 가지고있는 문제를 해결합니까? – luk2302
나는 그가 어떤 종류의 문자열 univ.BitString을 요구하는지 묻고 있었다. 나는이 정보를 발견 한 예제와 링크를 그에게 주었다. – NoOne