-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

当您像这样打印数组/指针时,您正在打印数据的地址。如果要打印数据,可以使用 %s,只要两者都以零结尾。

memcmp 不会将数组位置与指针进行比较,它会比较地址处的数据。因此,如果它返回 0,则在两个地址处打印数据应该会产生相同的字符串。

于 2016-03-10T18:23:16.643 回答
0

您正在打印两个数组的指针值,这是不同的。 memcmp()正在比较这些数组的内容而不是指针。

于 2016-03-10T18:23:00.360 回答