android — беззнаковая печать печатает правильное значение как 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 дает ответ на запись … Как я могу напечатать значения, чтобы получить правильное значение обоих?

-1

Решение

Вы печатаете значение указателя обоих массивов, которое отличается. memcmp() сравнивает содержимое этих массивов, а не указателей.

0

Другие решения

Когда вы печатаете массив / указатель таким образом, вы печатаете адрес данных. Если вы хотите распечатать данные, вы можете использовать% s, если оба они заканчиваются нулем.

memcmp не сравнивает местоположение массива с указателем, он сравнивает данные по адресу. Таким образом, если он возвращает 0, печать данных по обоим адресам должна привести к одинаковым строкам.

0

По вопросам рекламы [email protected]