QByteArrayの16進数への変換に失敗する

デレク

QTプロジェクトでGMPを使用しており、QByteArrayを使用していくつかの数値を保存しようとしています。

バイト配列をmpz_tに変換したいときは、次のことを行っています。

const char *hexstring = qbyteval.toHex().toStdString().c_str();
mpz_t myval;
mpz_init (myval);
mpz_set_str(myval, hexstring, 16);

mpz_t zero;
mpz_init(zero);
mpz_set_str(zero, "0", 10);

if(mpz_comp(myval, zero) == 0) {
//...set a breakpoint or do something here. This line shouldn't be reached ever.
}

私の場合、qbytevalは決してゼロはありません。そのmpz_compifブロック内にブレークポイントを設定した場合、qbyteval.toHex()は常に16進文字列のままです。

何が失敗しているのでしょうか。つまり、hexstringが空の文字列(したがってmyval = 0)になるのでしょうか。

デビッドグレイソン

これは間違っているように見えます:

const char *hexstring = qbyteval.toHex().toStdString().c_str();

このc_str()関数は、の内部データへのポインターを返します。このstd::stringポインターは、を変更または破棄すると無効になる可能性がありstd::stringます。この場合、std::string変数に格納しなかったため、その行が実行された直後にが破棄されます。

コードにはこのようなエラーがさらにある可能性がありますが、それが最も明白なエラーです。それでも問題が解決しない場合は、最小限の完全な例を投稿し、予想される動作と実際の動作をより適切に説明し、デバッガーを使用してすべての行で何が起こっているかを確認することをお勧めします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

16進数の文字列を16進数に変換する方法

分類Dev

10進数を16進数に変換する方法と16進文字列のXOR

分類Dev

負の16進数を10進数に変換する方法

分類Dev

bash:出力の16進数を10進数に変換するoneliner

分類Dev

Python:1桁の10進数を16進数に変換する

分類Dev

16進数へのJava負の整数とその逆が失敗する

分類Dev

10進数のSSIS「変換」が失敗する

分類Dev

QBytearray BCDを10進数のQString表現に変換する方法は?

分類Dev

(0.ABBA)16の16進数を8進数に変換する方法は?

分類Dev

UTF 16LEからUTF16BEへの.NETC#変換が失敗する

分類Dev

ジェネリック関数のKotlinへの変換に失敗する

分類Dev

10進数を16進数の変数に変換する方法は?

分類Dev

KotlinへのJava関数の変換が失敗する

分類Dev

16進数を2の補数に変換する

分類Dev

数字の文字列を同等の16進数に変換する

分類Dev

16進数のNSDataを10進数のNSDataに変換する方法は?

分類Dev

ファイルのロードと16進数への変換に関するメモリの問題

分類Dev

16進数の文字列をJavaでASCIIに変換する

分類Dev

16進数の#FFFFFFをSystem.Drawing.Colorに変換する方法

分類Dev

BigIntegerを固定長の16進数に変換する方法は?

分類Dev

Pythonで16進数を負の整数に変換する

分類Dev

C#ActiveDirectoryの16進数をGUIDに変換する

分類Dev

intを4バイトの16進数に変換する方法

分類Dev

16進数のstd :: stringをstd :: array <T、6>に変換する

分類Dev

rの行列で16進数を2進数に変換する方法は?

分類Dev

10進数または16進数の値を整数に変換する方法は?

分類Dev

16進数のエスケープ文字を2進数に変換する

分類Dev

複数の16進数をQByteArrayに同時に追加します

分類Dev

PyTorchVAEがonnxへの変換に失敗する

Related 関連記事

  1. 1

    16進数の文字列を16進数に変換する方法

  2. 2

    10進数を16進数に変換する方法と16進文字列のXOR

  3. 3

    負の16進数を10進数に変換する方法

  4. 4

    bash:出力の16進数を10進数に変換するoneliner

  5. 5

    Python:1桁の10進数を16進数に変換する

  6. 6

    16進数へのJava負の整数とその逆が失敗する

  7. 7

    10進数のSSIS「変換」が失敗する

  8. 8

    QBytearray BCDを10進数のQString表現に変換する方法は?

  9. 9

    (0.ABBA)16の16進数を8進数に変換する方法は?

  10. 10

    UTF 16LEからUTF16BEへの.NETC#変換が失敗する

  11. 11

    ジェネリック関数のKotlinへの変換に失敗する

  12. 12

    10進数を16進数の変数に変換する方法は?

  13. 13

    KotlinへのJava関数の変換が失敗する

  14. 14

    16進数を2の補数に変換する

  15. 15

    数字の文字列を同等の16進数に変換する

  16. 16

    16進数のNSDataを10進数のNSDataに変換する方法は?

  17. 17

    ファイルのロードと16進数への変換に関するメモリの問題

  18. 18

    16進数の文字列をJavaでASCIIに変換する

  19. 19

    16進数の#FFFFFFをSystem.Drawing.Colorに変換する方法

  20. 20

    BigIntegerを固定長の16進数に変換する方法は?

  21. 21

    Pythonで16進数を負の整数に変換する

  22. 22

    C#ActiveDirectoryの16進数をGUIDに変換する

  23. 23

    intを4バイトの16進数に変換する方法

  24. 24

    16進数のstd :: stringをstd :: array <T、6>に変換する

  25. 25

    rの行列で16進数を2進数に変換する方法は?

  26. 26

    10進数または16進数の値を整数に変換する方法は?

  27. 27

    16進数のエスケープ文字を2進数に変換する

  28. 28

    複数の16進数をQByteArrayに同時に追加します

  29. 29

    PyTorchVAEがonnxへの変換に失敗する

ホットタグ

アーカイブ