- From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
- Date: Fri, 29 Aug 2014 00:42:11 +0900
- To: Pavel Rappo <pavel.rappo@gmail.com>
- Cc: "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
- Message-ID: <CAPyZ6=LYXRCco6ENU8me_ct21TWYYvfNE8bpgXsez9cTd2KiOA@mail.gmail.com>
On Fri, Aug 29, 2014 at 12:25 AM, Pavel Rappo <pavel.rappo@gmail.com> wrote: > Hi everyone, > > I have several questions regarding Integer Representation, if you don't > mind. > > (1) First of all, the section "6.1. Integer Representation" contains a > link to Wikipedia's VLQ article. The article states that: "...The VLQ > octets are arranged most significant first in a stream..." (Big Endian > from the byte stream point of view). On the other hand (from what I > understand), encoding/decoding algorithms described in the HPACK draft > works exactly the opposite -- they assume Little Endian: > > decode I from the next N bits > if I < 2^N - 1, return I > else > M = 0 > repeat > B = next octet > I = I + (B & 127) * 2^M (*) > M = M + 7 > while B & 128 == 128 > return I > > In other words there is: I = I + (B & 127) * 2^M instead of I = I* 2^M > + (B & 127). > Either there's an error in the draft or I'm not getting it right. So > which one is it? > HPACK uses little endian. > (2) The second question is this. Does the decoding algorithm "forget" > to add (2^N - 1) to the result in the end? > ... > while B & 128 == 128 > return I + 2^N - 1 > > "I" is updated while loop: repeat B = next octet I = I + (B & 127) * 2^M ~~~~~~~~~~~~~~~~~~~~~ M = M + 7 while B & 128 == 128 So, initial "I" is not forgotten. > though encoding one "remembers" to do this: > > if I < 2^N - 1, encode I on N bits > else > (*) encode (2^N - 1) on N bits > I = I - (2^N - 1) > while I >= 128 > encode (I % 128 + 128) on 8 bits > I = I / 128 > encode I on 8 bits > (3) And the third question is a minor one. When decoding algorithm > mentions "I", which "I" exactly is that? > > > decode I from the next N bits > if I < 2^N - 1, return I (*) > ... > "I" comes from next N bits as algorithm exactly says: decode I from the next N bits HPACK integer encoding uses specific prefix bits, which is described as N here in algorithm. So when decoding integer encoded with 7 prefix bits, decode initial "I" from next 7 bits. Best regards, Tatsuhiro Tsujikawa > > If I'm not mistaken, we don't know it in that point. The whole purpose > of this code snippet is to get the "I". > > -Pavel > >
Received on Thursday, 28 August 2014 15:42:58 UTC