我无法将位置坐标传递给我在网络上连接的一组电机上。我可以很好地发送一个字符串,并从电动机接收文本,但似乎无法将其发送为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/

10-10 10:18