【问题标题】:unsigned char print correct value like the memcmpunsigned char 打印正确的值,如 memcmp
【发布时间】:2016-03-10 18:19:57
【问题描述】:

我有这个变量,

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

【问题讨论】:

    标签: android c++ c android-ndk memcmp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 但是我怎样才能看到真正的价值呢?想象分配给一个变量?然后打印?
      猜你喜欢
      • 2012-11-11
      • 1970-01-01
      • 2014-08-28
      • 2018-06-30
      • 2012-05-14
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2012-09-02
      相关资源
      最近更新 更多