12

これは非常に基本的な質問であることは承知していますが、基本的な概念が失われることがあります:)ゴーグルを試しましたが、それについても十分なサポートがありません。

デバイス所有者の 1 人から事前定義されたライブラリを使用しています。次のような宣言があります。

unsigned char FamilySerialNum[0][8]

この変数は、デバイスのシリアル番号を 16 進数で取得します。現在、Qt でこのライブラリを使用して、QLineEdit でシリアル番号を表示しています。そのためには、それを QString に変換する必要があります。

QString::UTF8、strcpy()、sprintf() などを使用してみましたが、ガベージ データが取得されました。

それで、誰かがそれを成し遂げる方法を私に提案できますか。

4

4 に答える 4

7

こんにちは、以下の機能をお試しください...

QString getStringFromUnsignedChar(unsigned char *str)
{

    QString s;
    QString result = "";
    int rev = strlen(str); 

    // Print String in Reverse order....
    for ( int i = 0; i<rev; i++)
        {
           s = QString("%1").arg(str[i],0,16);

           if(s == "0"){
              s="00";
             }
         result.append(s);

         }
   return result;
}
于 2012-09-14T02:36:10.067 に答える
0

int lengthOfString = strlen( reinterpret_cast(str) );//バグ、「00889966」のような長さを取得しようとすると

QString getStringFromUnsignedChar( unsigned char *str, const int len ){
    QString result = "";
    int lengthOfString = len  );

    // print string in reverse order
    QString s;
    for( int i = 0; i < lengthOfString; i++ ){
        s = QString( "%1" ).arg( str[i], 0, 16 );

        // account for single-digit hex values (always must serialize as two digits)
        if( s.length() == 1 )
            result.append( "0" );

        result.append( s );
    }

    return result;
}
于 2014-06-17T03:15:55.863 に答える