Как преобразовать целое число из 6 цифр, такое как «1234674» в шестнадцатеричные 4 байта NSData в Objective-C?Преобразование Unsigned Int в шестнадцатеричное значение
Это часть нашего кода, который посылает отмычка:
#define HSL_PRIVATE_SERVICE_UUID 0xFF20
#define HSL_PRIVATE_NEW_PASSKEY_UUID 0xFF35
unsigned int newPassKey = [_confirmNewPassKey.text intValue];
NSLog(@"newPasskey %d", newPassKey);
NSData *d = [NSData dataWithBytes:&newPassKey length:sizeof(unsigned int)];
[_t writeValue:HSL_PRIVATE_SERVICE_UUID characteristicUUID:HSL_PRIVATE_NEW_PASSKEY_UUID p:_peripheral data:d];
Я сделал захват воздуха по сравнению BTOOL против пишет iPhone отмычка.
BTOOL (Инструмент имитатор) писал (правильный результат):
0x40e201
iPhone писал (неверные данные):
0x0001e240
Не уверен, что происходит и как это исправить в приложение, чтобы результат совпал с ожидаемым устройством Bluetooth. Я хотел бы, чтобы результат был таким же, как BTOOL.
Контур вашего хоста не совпадает с контентом протокола. Для преобразования требуется 'hton *' или 'ntoh *'. –
Я не уверен, как это работает с NSLog, но обычно вы можете сделать это с помощью строки формата, используя '% x' вместо'% d'. См. Http://en.wikipedia.org/wiki/Printf_format_string - Изменить: игнорировать. @ Даниэль Фишер ответил тебе. – nonsensickle