我正在尝试将以下十六进制发送到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;
它表示“整数常量对于其类型来说太长了”
我似乎无法弄清楚除了这个十六进制值之外还有什么类型的整数。
答案 0 :(得分:1)
您应该只创建一个字节数组并发送它,而不是试图找到足够长的整数类型。您最终不仅无法为要发送的数据找到足够长的类型,而且在不同平台上的整数字节顺序也存在差异。
因此,要以任意顺序发送任意长的数据,请使用字节数组(unsigned char
,或者最好来自uint8_t
的{{1}}),例如:
stdint.h