![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Binary Native Endianness ParsersBoost , Spirit 2.5.2 , Binary Parsers
|
Имя |
---|
|
|
boost::spirit::dword //
alias: boost::spirit::qi::dword |
|
boost::spirit::bin_float //
alias: boost::spirit::qi::bin_float |
boost::spirit::bin_double //
alias: boost::spirit::qi::bin_double |
![]() | Note |
---|---|
|
Notation
b
Один байт (8-битное двоичное значение) или Ленивый аргумент, который оценивается до одного байта. Это значение всегда в родном эндиане.
w
16-битное двоичное значение или ленивый аргумент, оценивающий до 16-битного двоичного значения. Это значение всегда в родном эндиане.
dw
32-битное двоичное значение или ленивый аргумент , который оценивает до 32-битного двоичного значения. Это значение всегда в родном эндиане.
qw
64-битное двоичное значение или Lazy Argument, которое оценивается до 64-битного двоичного значения. Это значение всегда в родном эндиане.
f
Поплавковое двоичное значение или Ленивый аргумент, который оценивает поплавковое двоичное значение. Это значение всегда в родном эндиане.
d
Двойное двоичное значение или Ленивый аргумент, который оценивает двойное двоичное значение. Это значение всегда в родном эндиане.
Семантика выражения определяется только там, где она отличается от или не определена в PrimitiveParser
.
Выражение |
Описание |
---|---|
byte_ | Соответствует любой 8-битной нативной эндиановой двоичной системе. |
word | |
dword | Соответствует любому 32-битному нативному эндиану. |
| Соответствует любой 64-битной нативной эндиановой двоичной системе. |
bin_float | |
bin_double | Соответствует любому двойному родному эндиану. |
byte_(b) | |
| |
dword(dw) | |
qword(qw) | |
| |
bin_double(d) |
Выражение |
Атрибут |
---|---|
byte_ | boost::uint_least8_t |
word | boost::uint_least16_t |
dword | boost::uint_least32_t |
| |
bin_float | float |
bin_double | double |
byte_(b) | |
| |
dword(dw) | |
qword(qw) | |
| |
bin_double(d) | |
O(N), где N - число разреженных байтов
![]() | Note |
---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделе Основные примеры. |
Использование деклараций и переменных:
using boost::spirit::qi::byte_; using boost::spirit::qi::word; using boost::spirit::qi::dword; using boost::spirit::qi::qword; boost::uint8_t uc; boost::uint16_t us; boost::uint32_t ui; boost::uint64_t ul;
Базовое использование нативных бинарных парсеров для небольших эндиан-платформ:
test_parser_attr("\x01", byte_, uc); assert(uc == 0x01); test_parser_attr("\x01\x02", word, us); assert(us == 0x0201); test_parser_attr("\x01\x02\x03\x04", dword, ui); assert(ui == 0x04030201); test_parser_attr("\x01\x02\x03\x04\x05\x06\x07\x08", qword, ul); assert(ul == 0x0807060504030201LL); test_parser("\x01", byte_(0x01)); test_parser("\x01\x02", word(0x0201)); test_parser("\x01\x02\x03\x04", dword(0x04030201)); test_parser("\x01\x02\x03\x04\x05\x06\x07\x08", qword(0x0807060504030201LL));
Базовое использование нативных бинарных парсеров для больших эндиан-платформ:
test_parser_attr("\x01", byte_, uc); assert(uc == 0x01); test_parser_attr("\x01\x02", word, us); assert(us == 0x0102); test_parser_attr("\x01\x02\x03\x04", dword, ui); assert(ui == 0x01020304); test_parser_attr("\x01\x02\x03\x04\x05\x06\x07\x08", qword, ul); assert(0x0102030405060708LL); test_parser("\x01", byte_(0x01)); test_parser("\x01\x02", word(0x0102)); test_parser("\x01\x02\x03\x04", dword(0x01020304)); test_parser("\x01\x02\x03\x04\x05\x06\x07\x08", qword(0x0102030405060708LL));
Статья Binary Native Endianness Parsers раздела Spirit 2.5.2 Binary Parsers может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Binary Parsers ::
реклама |