Сжатие битов C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сжатие битов C++

Сообщение Anonymous »

Я работаю над 16-байтовым массивом или 128-битным массивом, полностью заполненным следующими битовыми полями:

Код: Выделить всё

struct data {
uint ttg    : 16;   // time to go, units:mins
int volts  : 16;   // units:10mV
uint alarms : 16;   // alarm flags
int mid_mv : 16;   // mid-point volts, units:10mV
int aux_in :  2;   // 0:Aux 1:Mid 2:Kelvin 3:none
int amps   : 22;   // units:ma
uint Ah     : 20;   // units:0.1Ah
uint soc    : 10;   // units:0.1%
uint pad    : 10;   // (pad to 16 bytes)
};

data datex;

void loadVals(){
datex.ttg    = 0xFFFE;    // mins = 45.5 days
datex.volts  = 0x7FFE;    // * 10mv = 327.66 volts
datex.alarms = 0x0000;    // no alarms
datex.mid_mv = 0xFFFE;    // * 10mv = 656.34 V (mid-point voltage)
datex.aux_in = 0x2;       // mid point V
datex.amps   = 0x1FFFFE;  // 2097.150A
datex.Ah     = 0xFFFFE;   // 104857.4Ah
datex.soc    = 0x320;     // 80% (state of charge)
datex.pad    = 0;         // padding
}
Если я затем напечатаю:

Код: Выделить всё

  #include 

Serial  

Подробнее здесь: [url]https://stackoverflow.com/questions/79348212/c-bit-compaction[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»