• <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記錄開發(fā)新知道

            關于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中每個值后等號后的數(shù)字(在C++和Java中,如果不設置這個值,則它是隨機的,如果在Python中,不設置,它則不被處理(這個在message binary format中的Field Order一節(jié)中有提到)。那么我們可以認為這個field_number是必須的。那么一個byte用來表達這個值就是000000000,其中紅色表示是否有后續(xù)字節(jié),如果為0表示沒有也就是這是一個字節(jié),藍色部分表示field-number,綠色部分則是wire_type部分,表示數(shù)據(jù)類型。也就是(field_number << 3) | wire_type。其中wire_type只有3位,表示數(shù)據(jù)類型。那么能夠表示field_number的就是5位藍色的數(shù)字,5位數(shù)字能夠表達的最大范圍就是1-15(其中0是無效的)。
            2. 16到2047,與上面的規(guī)則其實類似,下面以2bytes為例子,那么就有10000000 00000000,其中紅色部分依然是符號位,因為每個byte的第一位都用來表示下一byte是否和自己有關,那么對于>1byte的數(shù)據(jù),第一位一定是1,因為這里假設是2byte,那么第二個byte的第一位也是紅色,刨除這兩位,再扣掉3個wire_type位,剩下11位(2*8-2-3),能夠表達的數(shù)字范圍就是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 閱讀(5252) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            特殊功能
             
            大香网伊人久久综合网2020| 青春久久| 69久久夜色精品国产69| 久久综合久久美利坚合众国| 色婷婷久久综合中文久久一本 | 久久99精品久久久久久久久久| 久久久久AV综合网成人| 日本三级久久网| 亚洲精品视频久久久| 久久久久人妻一区精品色| 国产69精品久久久久99| 久久人人爽人人爽人人片AV麻烦| 亚洲AV日韩精品久久久久久 | 国产无套内射久久久国产| 久久亚洲精品无码播放| 77777亚洲午夜久久多喷| 亚洲人成无码久久电影网站| 久久精品男人影院| 婷婷五月深深久久精品| 欧美亚洲另类久久综合婷婷| av无码久久久久不卡免费网站| 大香伊人久久精品一区二区| 国产L精品国产亚洲区久久| 久久综合亚洲欧美成人| 一日本道伊人久久综合影| 国产精品99久久不卡| 91麻豆精品国产91久久久久久| 亚洲国产精品无码久久| 99久久这里只精品国产免费| 久久久久久极精品久久久| 久久免费小视频| 伊人久久精品线影院| 狠狠色丁香久久婷婷综合五月| 亚洲精品无码久久千人斩| 久久久久久伊人高潮影院| 麻豆精品久久久久久久99蜜桃| 欧美麻豆久久久久久中文| 亚洲精品国产自在久久| 久久久久99这里有精品10| 精品久久久久成人码免费动漫| 色偷偷88欧美精品久久久|