2012-01-21 141 views
0

我想下面的十六進制發送到NSOutputstream 0x0000000e00000001000000100000301416位十六進制和變量

我能發送十六進制是8位用下面的代碼:

long myhex = 0x0000000e00000001;  

NSData *data = [[NSData alloc] initWithBytes:&myhex length: sizeof(myhex)]; 
[outputStream write:[data bytes] maxLength:[data length]]; 

問題是當我試試這個:

long myhex = 0x0000000e000000010000001000003014; 

它說:「整型常量是其類型太長」

我似乎不知道什麼類型的整數將除了這個十六進制值。

回答

1

而不是試圖找到一個足夠長的整數類型,你應該創建一個字節數組併發送它。您不但最終無法找到足夠長的數據來發送您想要發送的數據,而且不同平臺上的整數字節順序也存在差異。

因此,要以任何順序發送任意長的數據,則使用一個字節數組(unsigned char,或,優選地,從uint8_tstdint.h),例如:

uint8_t dataBytes[] = { 0x00, … , 0x0e, … 0x30, 0x14 }; 
NSData *data = [[NSData alloc] initWithBytes:dataBytes length:sizeof(dataBytes)]; 
+0

這是要好得多。謝謝。這實際上解決了我在顛倒字節順序時遇到的另一個問題。優秀 !! – Ulooky