我无法将位置坐标传递给我在网络上连接的一组电机上。我可以很好地发送一个字符串,并从电动机接收文本,但似乎无法将其发送为int值。
使用NSlog,我确定我要发送的实际值是正确的,但是我怀疑通过输出流发送它的方法是错误的。有任何想法吗?
我发送64位int值的代码:
uint64_t rawInt = m1;
rawInt <<= 16;
rawInt |= m2;
NSData *buffer = [NSData dataWithBytes: &rawInt length:8];
[outputStream write: [buffer bytes] maxLength:[buffer length]];
最佳答案
好吧,您的代码看起来很有趣。无论如何,要通过网络发送二进制整数,您必须知道字节序:接收器期望的字节序很小或很大。
这是两者的代码:
uint64_t myInt = 42;
uint64_t netInt = CFSwapInt64HostToLittle(myInt); // use this for little endian
uint64_t netInt = CFSwapInt64HostToBig(myInt); // use this for big endian
[outputStream write:(uint8_t*)&netInt maxLength:sizeof(netInt)];
关于iphone - 将64位int值写入NSOutputStream,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3239284/