• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            MyMSDN

            MyMSDN記錄開發新知道

            關于protobuf中的field_number范圍的解釋

            以下是來自Google Protobuf Documents里的一句話:
            As you can see, each field in the message definition has a unique numbered tag. These tags are used to identify your fields in the message binary format, and should not be changed once your message type is in use. Note that tags with values in the range 1 through 15 take one byte to encode. Tags in the range 16 through 2047 take two bytes. So you should reserve the tags 1 through 15 for very frequently occurring message elements. Remember to leave some room for frequently occurring elements that might be added in the future.
            這里要做一個解釋,就是為什么是1到15,以及16到2047呢?
            1. 1到15,僅使用1bytes。每個byte包含兩個部分,一個是field_number一個是tag,其中field-number就是protobuf中每個值后等號后的數字(在C++和Java中,如果不設置這個值,則它是隨機的,如果在Python中,不設置,它則不被處理(這個在message binary format中的Field Order一節中有提到)。那么我們可以認為這個field_number是必須的。那么一個byte用來表達這個值就是000000000,其中紅色表示是否有后續字節,如果為0表示沒有也就是這是一個字節,藍色部分表示field-number,綠色部分則是wire_type部分,表示數據類型。也就是(field_number << 3) | wire_type。其中wire_type只有3位,表示數據類型。那么能夠表示field_number的就是5位藍色的數字,5位數字能夠表達的最大范圍就是1-15(其中0是無效的)。
            2. 16到2047,與上面的規則其實類似,下面以2bytes為例子,那么就有10000000 00000000,其中紅色部分依然是符號位,因為每個byte的第一位都用來表示下一byte是否和自己有關,那么對于>1byte的數據,第一位一定是1,因為這里假設是2byte,那么第二個byte的第一位也是紅色,刨除這兩位,再扣掉3個wire_type位,剩下11位(2*8-2-3),能夠表達的數字范圍就是2047(211)。
            參考資料:
            1. http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/proto.html
            2. http://code.google.com/apis/protocolbuffers/docs/encoding.html

            posted on 2011-03-19 02:01 volnet 閱讀(5264) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            特殊功能
             
            91精品观看91久久久久久| 亚洲精品乱码久久久久久蜜桃图片| 熟妇人妻久久中文字幕| 精品久久久久久久无码 | 一本大道久久a久久精品综合| 国产精品青草久久久久福利99| 欧美激情精品久久久久久久九九九 | 国产精品久久久亚洲| 国产精品美女久久久网AV| 欧美与黑人午夜性猛交久久久 | 囯产极品美女高潮无套久久久| 久久精品视频网| 久久无码中文字幕东京热| 久久精品国产亚洲AV无码娇色| 久久久久亚洲av毛片大| 久久香蕉超碰97国产精品| 性高朝久久久久久久久久| 久久国产亚洲高清观看| 国内精品久久久久影院亚洲| 91精品国产色综久久| 久久精品亚洲精品国产色婷 | 国产精品亚洲美女久久久| 国内精品九九久久精品 | 国产一区二区久久久| 99久久精品这里只有精品 | 老司机国内精品久久久久| 亚洲精品美女久久777777| 伊人久久大香线蕉精品不卡| 精品久久国产一区二区三区香蕉| 88久久精品无码一区二区毛片| 精品乱码久久久久久久| 午夜天堂精品久久久久| 久久婷婷五月综合97色直播| 日韩欧美亚洲综合久久影院Ds| 久久久久亚洲爆乳少妇无| 久久久人妻精品无码一区| 久久国产香蕉一区精品| 91久久香蕉国产熟女线看| 国产精品女同一区二区久久| 久久国产视频网| 狠狠色丁香久久婷婷综合_中 |