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")

Другие вопросы по тегам