将Unsigned Int转换为十六进制值

时间:2013-03-19 22:30:13

标签: ios objective-c c core-bluetooth

如何转换整数6位数字,例如" 1234674"到Objective-C中的十六进制4字节NSData?

这是我们发送密码的代码的一部分:

#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 

不知道发生了什么以及如何在应用中修复它,以便结果与蓝牙设备的预期相符。我希望结果与BTOOL一样。

1 个答案:

答案 0 :(得分:1)

试试这个:

uint32_t value = [_confirmNewPassKey.text intValue];
uint32_t swapped = CFSwapInt32HostToBig(value);
NSData *d = [NSData dataWithBytes:&swapped length:sizeof(swapped)];

这假设你想要输出大端。