-1

私はこの変数を持っています、

unsigned char identifier1[12];

この識別子を使用するときは、にキャストします

const uint8_t*

お気に入り

const uint8_t* getIdentifier() {return identifier1; }

そして私は関数で受け取ります:

unsigned char *zid

両方を比較したいので、これを使用しますmemcmp(identifier1, zid, 12);

答えは 0 なので、どちらも等しい...

しかし、値を出力すると:

__android_log_print(ANDROID_LOG_INFO, "MyTag", "%d %d",(int)identifier1,(int)zid);

両方で異なる値を取得します...のよう1711428512 1652772888に、書き込みの答えがmemcmp得られます...値を出力して両方の正しい値を取得するにはどうすればよいですか?

4

2 に答える 2

0

両方の配列のポインター値を出力していますが、これは異なります。 memcmp()ポインターではなく、これらの配列の内容を比較しています。

于 2016-03-10T18:23:00.360 に答える
0

そのように配列/ポインタを印刷すると、データのアドレスが印刷されます。データを印刷したい場合は、両方がゼロで終了している限り、%s を使用できます。

memcmp は、配列の場所をポインターと比較するのではなく、アドレスのデータを比較します。したがって、両方のアドレスのデータを印刷すると 0 が返された場合、同じ文字列になるはずです。

于 2016-03-10T18:23:16.643 に答える