Expressing large integer values in D-Bus APIs
Thiago Macieira
thiago at kde.org
Tue Jul 18 00:18:25 UTC 2017
On segunda-feira, 17 de julho de 2017 16:20:06 PDT Lawrence D'Oliveiro wrote:
> On Mon, 17 Jul 2017 15:34:08 -0700, Thiago Macieira wrote:
> > I'd recommend you just follow regular "bigint" type marshalling in
> > other binary protocols.
>
> Several years ago I came up with a variation
> <http://www.codecodex.com/wiki/Variable-Length_Integers> on the scheme
> used in Standard MIDI files. By applying an offset adjustment at each
> stage in the shift, I create a fully bijective encoding, while making
> the packing scheme ever so slightly more efficient.
Actually, it isn't. Note that the array's length is present in D-Bus whether
you want it or not, so we don't need the high bit to indicate continuation or
not.
For example, to encode a value like 40000, your mechanism would write:
c0 b8 01
whereas the suggestion I made would write:
40 9c
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
More information about the dbus
mailing list