| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.ByteString.Builder.VarWord
Description
Builders for several variable-length integer encoding schemes.
Documentation
varWordBe :: (Bits a, Integral a, Storable a) => a -> Builder Source #
Produce a Builder to encode an integer with a variable-length (chunked)
encoding. 7-bit chunks are produced in big-endian (most significant chunk
first) order, and each is prefixed with a continuation bit.
18464 == 1 0010000 0100000 ==
(A) (B) (C)
+-- Keep reading
| +-- Keep reading
| | +-- Stop
v v v
10000001 10010000 00100000
|<--->| |<--->| |<--->|
(A) (B) (C)>>>Builder.toLazyByteString $ varWordBe (18464 :: Word32)"\129\144\32"
denseVarWordBe :: (Bits a, Integral a, Storable a) => a -> Builder Source #
Produce a Builder to encode an integer with a variable-length (chunked)
encoding. 7-bit chunks are produced in big-endian (most significant chunk
first) order, each is prefixed with a continuation bit, and the
continuation bit carries a further bit of information to reduce the size of
the resulting encoding.
34976 == 10 0010001 0100000 == 34976
(A) (B) (C)
+-- Keep reading
| +-- Keep reading
| | +-- Stop
v v v
10000001 10010000 00100000
|<--->| |<--->| |<--->|
(A-1) (B-1) (C)>>>Builder.toLazyByteString $ denseVarWordBe (34976 :: Word32)"\129\144\32"
varWordLe :: (Bits a, Integral a, Storable a) => a -> Builder Source #
Produce a Builder to encode an integer with a varible-length (chunked)
encoding. 7-bit chunks are produced in little-endian (least significant
chunk first) order, and each is prefixed with a continuation bit.
526337 == 100000 0010000 0000001 ==
(A) (B) (C)
+-- Keep reading
| +-- Keep reading
| | +-- Stop
v v v
10000001 10010000 00100000
|<--->| |<--->| |<--->|
(C) (B) (A)>>>Builder.toLazyByteString $ varWordLe (526337 :: Word32)"\129\144\32"