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 big endian parsers are designed to parse binary byte streams that are laid out in big 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 big endian binary. |
|
|
Matches any 32 bit big endian binary. |
|
|
Matches any 64 bit big endian binary. |
|
|
Matches any float big endian binary. |
|
|
Matches any double big endian binary. |
|
|
Matches an exact 16 bit big endian binary. |
|
|
Matches an exact 32 bit big endian binary. |
|
|
Matches an exact 32 bit big endian binary. |
|
|
Matches an exact float big endian binary. |
|
|
Matches an exact double big 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::big_word; using boost::spirit::qi::big_dword; using boost::spirit::qi::big_qword; boost::uint16_t us; boost::uint32_t ui; boost::uint64_t ul;
Basic usage of the big endian binary parsers:
test_parser_attr("\x01\x02", big_word, us); assert(us == 0x0102); test_parser_attr("\x01\x02\x03\x04", big_dword, ui); assert(ui == 0x01020304); test_parser_attr("\x01\x02\x03\x04\x05\x06\x07\x08", big_qword, ul); assert(0x0102030405060708LL); test_parser("\x01\x02", big_word(0x0102)); test_parser("\x01\x02\x03\x04", big_dword(0x01020304)); test_parser("\x01\x02\x03\x04\x05\x06\x07\x08", big_qword(0x0102030405060708LL));