BigEndian書式のQbyteArray変数を持っています 最小プロセスでその変数から浮動小数点数型配列を取得したいとします。 最も速い方法は何ですか?QByteArrayからbigendian形式の浮動小数点配列を効率的に取得する
私は次のコードを使用していますが、それは効率的ではないと思います。
QByteArray::mid()
に呼び出しを削除し、余分なコピー・オン・ライトを防ぐためにのみconst
機能を使用し、
float getValue(QByteArray dataBytes, int i){
QByteArray data = dataBytes.mid(i*4, 4);
qint32 level = qFromBigEndian<qint32>((uchar*)data.data());
float result = level*1.0;
}
float *f = new float[20];
for (int i=0;i<20;i++){
f[i] = getValue(myDataBytes, i);
}
質問1:エンコードされた数値の整数ですか?質問2:ポータブルにしたいですか? –
ちょうどチェック: 'QByteArray'は' qint32'を含み、各BigEndian整数を通常のfloatに変換したいですか?その精度が失われることに注意してください。可能なすべての 'qint32'を表すには' double'が必要です。 – MSalters