• BSON结构



    BSON结构

    flyfish 2015-7-24


    主要解释bsonspec.org站点上的两个样例


    {"hello": "world"} 


    hello为key。world为value 相应的是


      x16x00x00x00                   
      x02                               
      hellox00                          
      x06x00x00x00worldx00
      x00 



    解释每一行的意思


    x16x00x00x00 
    x表示16进制的方式
    4个字节表示文档的大小,包含文档末尾的'',''是x00 0x16十进制是22,这个文档的大小是22个字节
    採用小端(Little Endian) 原文:Each type must be serialized in little-endian format.
    每一种类型必须依照little-endian格式序列化。


    x02
    一个字节表示value的类型,通过查看bsonspec 文档
    原文:"x02" e_name string UTF-8 
    x02 表示value的类型是string。字符串编码使用的是UTF-8 


    hellox00 
    表示以''结尾的字符串


    x06x00x00x00worldx00
    \x06x00x00x00 前4个字节表示以''结尾的字符串world的长度

    x00 
    结束符


    {"BSON": ["awesome", 5.05, 1986]}

    原文:the array ['red', 'blue'] would be encoded as the document {'0': 'red', '1': 'blue'}. The keys must be in ascending numerical order.
    数组['red', 'blue']将要编码为{'0': 'red', '1': 'blue'}。key必须依照数值大小递增排序(升序)。
    也就是["awesome", 5.05, 1986]将被编码为{ "0":"awesome", "1":5.05,"2":1986}
    {"BSON": [ "0":"awesome", "1":5.05,"2":1986]}

    相应是

      x31x00x00x00
      x04BSONx00
      x26x00x00x00
      x02x30x00x08x00x00x00awesomex00
      x01x31x00x33x33x33x33x33x33x14x40
      x10x32x00xc2x07x00x00
      x00
      x00



    解释每一行的意思
    x31x00x00x00
    4个字节表示文档的大小。x31的10进制是49,这个文档的大小是49个字节


    x04BSONx00
    原文:"x04" e_name document Array
    x04表示value的类型是数组表示的document
    BSONx00 表示以''结尾的字符串


    x26x00x00x00 
    4个字节表示数组的大小即中括号的内容,x26的10进制是38


    x02x30x00x08x00x00x00awesomex00
    x02 表示value的类型是string
    x30表示key,字符0的ASCII码是48,16进制是x30
    纵向看正好是x30。x31,x32
    x08x00x00x00  4个字节表示awesomex00 长度


    x01x31x00x33x33x33x33x33x33x14x40

    x01
    原文x01" e_name double 64-bit binary floating point
    表示64位的二进制浮点数
    x31x00表示以''结尾的字符串1,字符1的ASCII码是x31
    x33x33x33x33x33x33x14x40
    double的5.5转换成16进制为40 14 33 33 33 33 33 33


    x10x32x00xc2x07x00x00
    原文:"x10" e_name int32 32-bit integer
    x10表示32位的整数
    x32x00表示以''结尾的字符串2,字符2的ASCII码是x32
    xc2x07x00x00
    也就是16进制的7c2转换成10进制是1986


      x00

      x00

    结束符











  • 相关阅读:
    [Swift]LeetCode85. 最大矩形 | Maximal Rectangle
    [Swift]LeetCode84. 柱状图中最大的矩形 | Largest Rectangle in Histogram
    [Swift]LeetCode82. 删除排序链表中的重复元素 II | Remove Duplicates from Sorted List II
    [Swift]LeetCode81. 搜索旋转排序数组 II | Search in Rotated Sorted Array II
    [Swift]LeetCode80. 删除排序数组中的重复项 II | Remove Duplicates from Sorted Array II
    [Swift]常用正则表达式
    [Swift]LeetCode79. 单词搜索 | Word Search
    Unreal Enginer4特性介绍-牛B闪闪的UE4
    网站开发和企业级开发有什么区别?
    网站开发和企业级开发有什么区别?
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8554939.html
Copyright © 2020-2023  润新知