Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2023. The current version is 1.89.0.
Binary little endian parsers are designed to parse binary byte streams that are laid out in little endian.
// forwards to <boost/spirit/home/qi/binary.hpp> #include <boost/spirit/include/qi_binary.hpp>
Also, see Include Structure.
|
Name |
|---|
|
|
|
|
|
|
|
|
|
|
![]() |
Note |
|---|---|
|
Notation
wA 16 bit binary value or a Lazy Argument that evaluates to a 16 bit binary value. This value is always in native endian.
dwA 32 bit binary value or a Lazy Argument that evaluates to a 32 bit binary value. This value is always in native endian.
qwA 64 bit binary value or a Lazy Argument that evaluates to a 64 bit binary value. This value is always in native endian.
fA float binary value or a Lazy Argument that evaluates to a float binary value. This value is always in native endian.
dA double binary value or a Lazy Argument that evaluates to a double binary value. This value is always in native endian.
Semantics of an expression is defined only where it differs from, or
is not defined in PrimitiveParser.
|
Expression |
Description |
|---|---|
|
|
Matches any 16 bit little endian binary. |
|
|
Matches any 32 bit little endian binary. |
|
|
Matches any 64 bit little endian binary. |
|
|
Matches any float little endian binary. |
|
|
Matches any double little endian binary. |
|
|
Matches an exact 16 bit little endian binary. |
|
|
Matches an exact 32 bit little endian binary. |
|
|
Matches an exact 32 bit little endian binary. |
|
|
Matches an exact float little endian binary. |
|
|
Matches an exact double little endian binary. |
|
Expression |
Attribute |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
O(N), where N is the number of bytes parsed
![]() |
Note |
|---|---|
The test harness for the example(s) below is presented in the Basics Examples section. |
Using declarations and variables:
using boost::spirit::qi::little_word; using boost::spirit::qi::little_dword; using boost::spirit::qi::little_qword; boost::uint16_t us; boost::uint32_t ui; boost::uint64_t ul;
Basic usage of the little endian binary parsers:
test_parser_attr("\x01\x02", little_word, us); assert(us == 0x0201); test_parser_attr("\x01\x02\x03\x04", little_dword, ui); assert(ui == 0x04030201); test_parser_attr("\x01\x02\x03\x04\x05\x06\x07\x08", little_qword, ul); assert(ul == 0x0807060504030201LL); test_parser("\x01\x02", little_word(0x0201)); test_parser("\x01\x02\x03\x04", little_dword(0x04030201)); test_parser("\x01\x02\x03\x04\x05\x06\x07\x08", little_qword(0x0807060504030201LL));