16位十六进制和变量

时间:2012-01-21 23:38:51

标签: objective-c variables hex 16-bit

我正在尝试将以下十六进制发送到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;

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

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

1 个答案:

答案 0 :(得分:1)

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

因此,要以任意顺序发送任意长的数据,请使用字节数组(unsigned char,或者最好来自uint8_t的{​​{1}}),例如:

stdint.h