Программы на 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]
1736619364
Anonymous
Я работаю над 16-байтовым массивом или 128-битным массивом, полностью заполненным следующими битовыми полями:
[code]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
}
[/code]
Если я затем напечатаю:
[code] #include
Serial
Подробнее здесь: [url]https://stackoverflow.com/questions/79348212/c-bit-compaction[/url]