2013-02-27 23 views

回答

3

數據是字節,字節是位不是十六進制,十六進制它只是一種解釋數據的方式。在ARM的int是32位(可以使用int32_t或的sizeof)

你可以做

int x = 1234674; 
NSData *myData = [NSData dataWithBytes:&x length:sizeof(int)] 

,然後如果你想打印出的數據爲十六進制:

char c[4] = [myData bytes]; 
NSLog("%@",[NSString stringWithFormat:@"%02X%02%02X%02",c[0],c[1],c[2],c[3]]); 

如果你只是想打印出來或轉換爲十六進制字符串,您可以使用字符指針這樣的:

char *c = &x; 
NSString *hexStr = [NSString stringWithFormat: 
    @"%02X%02%02X%02", *c, *(c+1), *(c+2), *(c+3)]; 

我沒有嘗試代碼,但應該是工作,並在情況下,我希望你有這個想法

+0

這是發送密鑰的我們的代碼部分: 的#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]; – 2013-03-19 22:22:34

+0

我做了一個空氣捕獲比較BTOOL與iPhone的密碼寫入。 BTOOL寫道0x40e201 iPhone寫了0x0001e240 不確定發生了什麼事以及如何在應用程序中修復它,以便結果與藍牙設備所期望的一致。我希望結果與BTOOL相同。 – 2013-03-19 22:23:04

相關問題