Это идея, да.Это называется битфилдом.Число указывает количество бит, которые кодер запрашивает, чтобы это поле заняло.Если вы подсчитаете их все, вы увидите, что они суммируют до 64.
Проблема в том, что C ++ (в отличие от Ada) не дает реального способа гарантировать, что вся структура занимает только 64 бита.Так что, если вы компилируете это в системе, отличной от той, для которой она была разработана, я бы обязательно это проверил.
Когда я пишу драйверы устройств в C ++, я не использую битовые поля,Вместо этого я использую битовые маски.Конечно, проблема в том, что вы должны знать, как ваша платформа упорядочивает свои байты.