私のプロジェクトには、16進値(ビッグエンディアン)のQStringがあります。
QString hex_in("413DF3EBA463B0");
hex_inを丸められたdoubleに変換するにはどうすればよいですか?IEEE 754(https://en.wikipedia.org/wiki/Double_precision_floating-point_format)
34.5
ユーザーがdoubleを編集してから、プログラムでそれを16進数に戻す必要があります。
御時間ありがとうございます :)
それを行う方法は実際には1つしかありません。それは、文字列を整数に変換しunion
、整数メンバーを設定してメンバーを読み取る場所に配置することですdouble
。
文字列変換には、たとえばこれらの関数の1つを使用できます。
コード例:
double hexstr2double(const std::string& hexstr)
{
union
{
long long i;
double d;
} value;
value.i = std::stoll(hexstr, nullptr, 16);
return value.d;
}
// ...
std::cout << "413DF3EBA463B0 = " << hexstr2double("413DF3EBA463B0") << '\n';
上記のコードの出力は次のようになります
413DF3EBA463B0 = 1.91824e-307
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加