Есть 2 функции для копирования памяти из QBitArray в double и обратно.
double bitsToDouble(QBitArray &arr) {
void *value;
qMemCopy(value,arr.data_ptr()->data+1,sizeof(double));
double ret = (*(double*)value);
return ret;
}
QBitArray doubleToBits(const double &val) {
QBitArray r(sizeof(val)*8);
qMemCopy(r.data_ptr()->data+1, &val, sizeof(val));
return (r);
}
Пример использования:
int main() {
double ch1 = 5.55;
double ch2 = 3.35;
QBitArray ba1;
ba1 = doubleToBits(ch1);
qDebug()<<ba1[0];
QBitArray ba2;
ba2 = doubleToBits(ch2);
qDebug()<<ba2[0];
double cch1 = bitsToDouble(ba1);
double cch2 = bitsToDouble(ba2);
qDebug()<<cch1;
qDebug()<<cch2;
return 0;
}
В таком виде все работает, но как только убираю qDebug() напрочь отказывается работать.
Запускается /home/anton/GA-build-desktop/GA...
Программа неожиданно завершилась.
/home/anton/GA-build-desktop/GA завершился с кодом 0
Подскажите в чем проблема? И вообще можно ли применять такое конвертирование?