pyasn1.error.PyAsn1Error: неизвестный битовый идентификатор
Я пытался использовать метод prettyIn
из библиотеки питона pyasn1.type.univ.BitString
,
Этот метод принимает строку, но что бы я ни передавал, в интерактивной оболочке python возникает исключение 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 ответ
Только что увидел этот вопрос, так как я сейчас над ним работаю, могу вам сказать.
http://transit.iut2.upmf-grenoble.fr/doc/python-pyasn1/pyasn1-tutorial.html
BIT STRING::= '1010111011110001010110101101101 1011000101010000010110101100010 0110101010000111101010111111110'B подпись BIT STRING::= 'AF01330CD932093392100B39FF00DE0'H
что означает, univ.BitString("'AF01330CD932093392100B39FF00DE0'H")