pyasn1。error.pyasn1错误:未知位标识

2024-09-27 23:22:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python库中的方法prettyIn。你知道吗

这个方法接受一个字符串,但是无论我传入什么,在python交互式shell中都会引发异常pyasn1.error.PyAsn1Error: Unknown bit identifier。我在谷歌上查到了该方法的源代码,我发现:

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

有人知道这个方法需要什么样的字符串吗?这个方法是用在一个程序,我必须调试,不能改变。你知道吗

谢谢你的帮助

库本图


Tags: 方法inforreturnifvalueerrorelse
1条回答
网友
1楼 · 发布于 2024-09-27 23:22:12

我可以告诉你,我刚刚看到这个问题。你知道吗

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

位串::='101011011010101101 1011000101010000010110101100010 0110101000011101010111111110'B 签名位字符串::='AF01330CD932093392100B39FF00DE0'H

也就是说,通用位串(“'AF01330CD932093392100B39FF00DE0'H”)

相关问题 更多 >

    热门问题