bitstring 订阅
BitString 展开全文
BitString
信息
操作系统
跨平台
开发语言
Python查看源码 »
开源协议
MIT/X
BitString
bitstring 是一个 Python 模块用来简化创建和分析二进制数据的操作,BitString 的对象可直接从包括整数、浮点数、十六进制、十进制和二进制、字节数据中构造。 示例代码: >>> h = BitArray('0x000001b3') >>> o = BitArray('0o755') >>> b = BitArray('0b001001111')
收起全文
精华内容
下载资源
问答
  • bitstring.unpack用于拆包,现在问题是第三项数值数据org_time (值为132)在调用bitstring.pack()打包,再调用bitstring.unpack()解包,得到的第三项数据 _time始终为0,也就是说数据在打包拆包过程中丢失了,这是...
  • 22 Bitstring类型标识  22.1 bitstring类型应该使用BitStringType标识引用:  BitStringType ::=  BIT STRING  | BIT ST

    22 Bitstring类型标识

           22.1 bitstring类型应该使用BitStringType标识引用:

           BitStringType ::=

                  BIT STRING

                  | BIT STRING “{” NamedBitList “}”

     

           NamedBitList ::=

                  NamedBit

                  | NamedBitList “,” NamedBit

     

           NamedBit ::=

                  identifier “(” number ”)”

                  | identifier “(“ DefinedValue ”)”

     

           22.2 比特流的第一个比特被称为首比特,最后一个比特被称为尾比特。

           注- 该专业用语用语值标识和定义编码规则。

     

           22.3 DefinedValue应该引用一个非负的整型值。

     

           22.4 出现在NamedBitList中的每个number或DefinedValue的值应该是不同的,并且是用语定义bitstring值中的关键比特的数量。比特流的首比特根据是不是数字0来识别最后的比特是否包含连续值。

     

           22.5 NamedBitList中的每个identifier应该是不同的。

           注1- NamedBitList中的NamedBit表达式序列的顺序是不重要的。

           注2- 因为NamedBitList中的identifier不能用来定义NamedBit的相关值,所以DefinedValue不会被曲解为整型值。例如:

           a INTEGER ::= 1

           T1 ::= INTEGER {a(2)}

           T2 ::= BIT STRING {a(3), b(a) }

           最后一个a的值是1,它不会引用第二或第三个a发生的事件。

     

           22.6 NamedBitList的出现对该类型的抽象值集合不会产生影响。值包含指定比特之外的比特是允许的。

          

           22.7 当NamedBitList用来定义bitstring类型的ASN.1编码规则时,允许在值进行编码或解码的时候,在值的尾部增加或减少任意多个0比特。应用设计者应该确保不同的应用场景值的区别仅在与尾部的0的个数。

     

           22.8 该类型标签为universal类型,值3。

     

           22.9 bitstring类型的值应该使用BitStringValue标识定义,或当使用XMLValue时,使用XMLBitStringValue标识定义。表达式如下:

           BitStringValue ::=

                  bstring

                  | hstring

                  | “{” IdentifierList “}”

                  | “{” “}”

                  | CONTAINING VALUE

     

           IdentifierList ::=

                  identifier

                  | IdentifierList “,” identifier

     

           XMLBitStringValue ::=

                  XMLTypedValue

                  | xmlbstring

                  | XMLIdentifierList

                  | empty

     

           XMLIdentifierList ::=

                  EmptyElementList

                  | TextList

     

           EmptyElementList ::=

                  “<” & identifier “/>”

                  | EmptyElementList “<” &identifier “/>”

     

           TextList ::=

                  identifier

                  | TextList identifier

     

           22.10 XMLValueAssignment只能出现EmptyElementList和TextList中的一种。

     

           22.11 XMLTypedValue选项只有在bitstring值的内容与某个ASN.1类型存在约束关系,且没有定义ENCODED BY。如果使用了该选项,XMLTypedValue应该是ASN.1类型约束的值。

     

           22.12 XMLIdentifierList选项只有在bitstring包含一个NamedBitList的值的时候才能被使用。

     

           22.13 BitStringValue或XMLBitStringValue的identifier的值应该和对应的BitStringType表达式序列的值是相等的。

     

           22.14 empty选项表示bitstring不包含比特。

     

           22.15 如果bitstring包含被命名的bit,BitStringValue或XMLBitStringValue标识使用identifier定义的数字指示1的bit流中的位置,其他比特为0。

           注- 对于一个包含NamedBitList的BitStringType,BitStringValue中包含的”{””}”序列和XMLBitStringValue中包含的empty用来表示bitstring不包含任何比特。

     

           22.16 当使用bstring或xmlbstring时,bstring的首比特在左侧,尾比特在右侧。

     

           22.17 当使用hstring标识,每个16进制数字最重要的比特对应bstring中最左侧的比特。

           注- 该标识不是用于约束编码规则把bstring转成字符串用于传输。

     

           22.18 hstring标识只在bstring值包含4的整数倍的比特的时候使用。

    例如:

           ‘A98A’ H

           ‘1010100110001010’ B

    是相等的比特值。如果类型使用NamedBitList定义,尾数0不是构成值的一部分,所以该值长度是15。如果类型不是使用NamedBitList定义,那么尾数0是值的一部分,该值长度16。

     

           22.19 CONTAINING选项只有在包含CONTAINING选项的bitstring类型内容约束上使用。该值应该是在ContentConstaint中类型的值。(详见X682,第11章)

     

           22.20CONTAINING选项应该在bitstring类型不包含ENCODED BY,并且包含内容约束的时候使用。
    展开全文
  • 本文简介了ASN.1规则中Boolean和bitstring的编码方式。
            在国际标准ITU-T X.690 《Information technology – ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)》中定义了ASN.1编码规则。对于一般数据类型(比如Integer、octetstring、bitstring等),ASN.1编码的一般形式如下图所示:

             对于Boolean类型,标志位取值为1,DER编码规则使用0xFF表示Ture,BER编码规则可使用任意非0值表示True,它们都使用0表示False,不管取值是True还是False,值的长度都是1个字节。于是True的DER编码如下图:

            False的编码如下图:

            接下来介绍bistring类型的编码方法:bistring类型的标志位取值为3。不包含任何比特的比特串被称为“空比特串”(empty bitstring)。其他比特串,例如对于“10101”这个比特串,其长度(即比特个数)为5,在这里将其表示为:{1,0,1,0,1}。考虑到比特串的长度不一定刚好是8的整数倍,而计算机中的最小存储单位是“字节”,一个字节包含8个比特,为了便于在计算机中表示比特串,对bitstring类型做ASN.1编码时,要做一些补位等额外的操作,按照以下步骤进行:
    1) 补位;当比特串的长度不是8的整数倍时,要先对比特串进行补位。方法是在比特串的末尾添加比特 0,直到整个比特串的长度刚好是8的整数倍时停止。
    2) 添加补位长度字节;将补位时添加的比特个数用一个字节表示,添加到补位结果比特串的前面。如果比特串的长度恰好是8的整数倍,此时未补位,那么此时必须在原始比特串前面添加一个0x0字节,以表示添加的补位比特个数为0。由此可知,补位长度这一个字节的取值范围为0到7。在进行过补位情况下(即原始比特串长度不是8的整数倍),补位长度字节和补位结果比特串共同组成了ASN.1  bitstring编码的负载部分;在未补位情况下(即原始比特串长度是8的整数倍),补位长度字节0和原始比特串共同组成了ASN.1  bitstring编码的负载部分。
    3)编码。按照标志位、负载长度、负载的次序,进行编码。
    对于比特串{1,0,1,0,1},编码过程如下图:


            对于空串(empty bitstring),其编码为:0x3  0x0
    注意空串编码中仅包含标志位和负载长度,不包含负载部分。

            如果一个比特串中不包含比特1,例如 {0},该比特串仅包含一个比特0,其DER编码为:0x3  0x1  0x0
    (实际上一个完全由比特0组成的比特串并无实际意义,一般用一个比特 {0} 来统一表示这一类的比特串)
            DER编码规则要求输入编码器的原始比特串的最后一个比特必须是1,即类似 {1, 0, 1, 0, 0} 这种以比特0作为结尾比特的比特串不是符合要求的编码器输入。而BER编码规则不要求输入编码器的原始比特串的最后一个比特必须为1,在编码前,甚至可以在一个比特串的末尾再添加任意个比特0。例如:在应用BER编码规则时,{1. 0, 1} 可以编码为以下不同的形式:
    0x3  0x2  0x5  0xA0
    0x3  0x3  0x5  0xA0  0x0
    0x3  0x4  0x5  0xA0  0x0  0x0
    0x3  0x5  0x5  0xA0  0x0  0x0  0x0
    .......

            使用BER编码规则时,对同一个对象编码,其编码结果可以是不唯一的。而使用DER编码规则时,对同一对象编码,其编码结果一定是唯一的。在实际应用中,大多数情况下都使用DER编码。

    展开全文
  • 本文介绍了RFC系统文档中对BIT STRING类型数据赋值的含义。

            在RFC系列(https://www.ietf.org/rfc.html)文档中,对于数据的封装格式,一般采用ASN.1编码形式描述。这样做的原因在于:ASN.1编码是一种与软硬件无关的数据格式定义方法,具有普适性。在前一篇博文中,介绍过ASN.1对bitstring类型的编码方法,在本文中将举例说明ASN.1 bitstring在RFC文档中的应用。
            在RFC5280 《Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile》中的4.2.1.3. Key Usage部分,使用bitstring类型描述密钥用途,如下所示:
    KeyUsage ::= BIT STRING {
      digitalSignature (0),
      nonRepudiation (1), -- recent editions of X.509 have
                                       -- renamed this bit to contentCommitment
      keyEncipherment (2),
      dataEncipherment (3),
      keyAgreement (4),
      keyCertSign (5),
      cRLSign (6),
      encipherOnly (7),
      decipherOnly (8) }
            比特串中不同位置的比特,如果值为1,表示具有该比特位对应的密钥用途;如果值为0,表示不具备该比特位的密钥用途。在上面的例子中,比特位从0开始计,比特位置与密钥用途的对应关系如下图:

            如果一张数字证书的密钥用途是keyCertSign,则应将上图中第5比特位的值设为1,那么此时表示密钥用途的比特串为{0, 0, 0, 0, 0, 1, 0, 0, 0}。由于一般使用DER编码,要求当一个比特串作为编码器的输入时,其最后一个比特必须为1,所以需要去掉最后一个比特1之后的所有比特0,此时密钥用途比特串的值应该表示为:{0, 0, 0, 0, 0, 1}。对这个比特串进行DER编码,得到的编码结果为:0x3  0x2  0x2  0x4,编码过程如下图:

            在Windows中查看一张密钥用途为keyCertSign的证书,显示内容如下:


    用Asn1View工具查看这张证书的密钥用途部分,显示如下:


            同一张数字证书可能会具有多种密钥用途,此时可能会有多个比特位的值为1。比如一张数字证书具有的密钥用途包括以下几种:digitalSignature,nonRepudiation,keyCertSign,cRLSign,使用比特串表示时应写为:{1, 1, 0, 0, 0, 1, 1, 0, 0}。对这个比特串进行编码的过程如下:

            在Windows中查看一张密钥用途包括digitalSignature,nonRepudiation,keyCertSign,cRLSign的证书,显示内容如下:


            用Asn1View工具查看这张证书的密钥用途部分,显示如下:

    展开全文
  • Windows下安装Lua bitstring Library

    千次阅读 2011-08-20 14:48:25
    lua-bitstring是一个Lua库,提供了类似Erlang里解码网络协议方法,对用Lua来实现Wireshark 解码很有帮助哦。 安装Lua for Windows http://luaforwindows.luaforge.net/ 安装b
    
    

    lua-bitstring是一个Lua库,提供了类似Erlang里解码网络协议方法,对用Lua来实现Wireshark 解码很有帮助哦。

    安装Lua for Windows

    http://luaforwindows.luaforge.net/

    安装bitstring

    http://code.google.com/p/lua-bitstring/downloads/list

    下载prebuilt-win32-bitstring-1.0.zip,将bitstring.dll复制到Lua安装目录的clibs目录,默认是:c:\Program Files\Lua\5.1\clibs

    测试是否安装成功

    require "bitstring"

    展开全文
  • JAVA经典面试题附答案(持续更新版)

    万次阅读 多人点赞 2019-01-18 01:31:16
    下图单位是bit,非字节 1B=8bit String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new ...
  •  突然程序全面报错,郁闷,所有的 binary 类型的数据都成了 bitstring bitstring类型时,所有binary操作全部失败。   仔细查看文档,原来bitstring是破坏了binary 结构后的产物。binary的位数必须能被8 整除...
  • Redis教程04(String类型之BIT)

    千次阅读 2019-02-12 10:55:54
    在上篇文章中介绍了String类型中常用的命令,但没有涉及到bit相关的命令,本文主要介绍下bit相关的操作命令。开发中有时这些命令的使用会更优效率。 Redis教程03(String介绍) Redis中字符串的存储方式都是以二...
  • java类型 7bit字节与String 相互转换

    千次阅读 2018-04-03 09:10:22
    在通信GSM,俗称的2G 通常采用的是7bit编码,是一种7位编码压缩算法,其实原理上来说一个...也就是说8个字节 之前的话 64位比特位来表达 现在 56位就足够少8个字节这个是7bit转换为String代码public static String ...
  • Redis字符串(STRING)中BIT相关命令

    千次阅读 2018-12-03 17:13:14
    上篇文章我们对STRING数据类型中一些基本的命令进行了介绍,但是没有涉及到BIT相关的命令,本文我们就来看看几个和BIT相关的命令。 本文是Redis系列的第四篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上...
  • HDOJ/HDU 2700 Parity(奇偶判断~)

    千次阅读 2016-05-18 23:53:04
    Problem Description A bit string has odd parity if the number of 1’s is ... A bit string has even parity if the number of 1’s is even.Zero is considered to be an even number, so a bit string with no
  • bit_set中to_string的使用

    2008-07-09 17:04:00
    类似string str=b.to_...的代码在GCC中不能通过,因为在GCC采用的STL库中,bit_set的to_string()是一个模板函数,MINGW中的定义为:template basic_string to_string() const { basic_string __result; _M_copy
  • December 4th Friday 2009

    2009-12-04 17:12:00
    In Erlang, the both syntax of Bit String Comprehensions and List Comprehensions are so similar. Bit string comprehensions are written with the following syntax: >BitString is a bit string exp
  • string本身就是字节流没有编码方式,等需要他时编译器会以编译器的编码读取方式读取并且没什么问题,至于显示是否是乱码得看很多东西,string本身应该读取的编码方式是否就是编译器的编码方式,是否也是系统默认的...
  • ECC公钥eccpubkey的ASN.1编码规则

    千次阅读 2011-07-09 11:19:38
    自己在工作中,需要用到ECC公钥的asn.1编码,ECC公钥的asn.1格式是bit string。这次碰到了一个bit string的开头是这样的,03 4200 04c5 d21e ......03是bit string的tag,42是bit string的length,00
  • 题目地址:  ... 题目很简单,把一个10进制数表示成二进制,然后求最后一个1的大小,即:88:二进制为:...计算很简单,直接用bitset,但是遇到编译错误:no matching function for call to `std::bitset::to_string()
  • HDU2700:Parity

    千次阅读 2013-01-25 16:22:12
    Problem Description A bit string has odd parity if the number of 1's is odd. A bit string has even parity if the number of 1's is even.Zero is considered to be an even number, so a bit string with no
  • Magic Bitstrings

    2017-10-16 03:52:21
    If each row of the matrix is either the original bitstring or its complement, the original bitstring is magic. Input Each line of input (except last) contains a prime number p Output For each prime...
  • Parity

    2017-07-29 07:49:57
    A bit string has even parity if the number of 1's is even.Zero is considered to be an even number, so a bit string with no 1's has even parity. Note that the number of 0's does not affect the parity ...
  • bit,byte,char,string区别与基本类型认识

    千次阅读 2014-09-22 17:45:48
    bit(位):一个位就代表一个0或1(即二进制)
  • uimsbf和 bslbf的含义

    千次阅读 2012-05-09 12:22:24
    bslbf代表位串,即“Bit string, left bit first ”, uimsbf代表无符号整数,即”unsinged integer, most significant bit first”,数字表示该数据项所占的比特数   又一解释:   bslbf (bit string, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 279,956
精华内容 111,982
关键字:

bitstring