2016-03-10 40 views
-1

我有这样的变量,无符号字符打印正确的值,如memcmp

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给出了写回答...我如何打印这些值以获得它们两者的正确值?

回答

0

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

0

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

memcmp不会将数组位置与指针进行比较,它会比较地址处的数据。所以如果它返回0打印数据在两个地址应导致相同的字符串。

+0

但我怎样才能看到真正的价值?想象分配给一个变量?并打印后? – JMR

+0

,因为我可以在中间零终止问题... – JMR