0

我正在尝试将以下十六进制发送到 NSOutputstream 0x0000000e000000010000001000003014

我可以使用以下代码发送 8 位的十六进制:

long myhex = 0x0000000e00000001;    

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

问题是当我尝试这个时:

long myhex = 0x0000000e000000010000001000003014;

它说“整数常量对于它的类型来说太长了”

我似乎无法弄清楚除了这个十六进制值之外的整数类型。

4

1 回答 1

1

与其尝试找到足够长的整数类型,不如只创建一个字节数组并发送它。您最终不仅无法为您希望发送的数据找到足够长的类型,而且不同平台上的整数字节顺序也存在差异。

因此,要以任何顺序发送任意长的数据,请使用字节数组(unsigned char或者,最好是uint8_tfrom stdint.h),例如:

uint8_t dataBytes[] = { 0x00, … , 0x0e, … 0x30, 0x14 };
NSData *data = [[NSData alloc] initWithBytes:dataBytes length:sizeof(dataBytes)];
于 2012-01-21T23:41:02.557 回答