嘿,我完全超出了我的深度,我的大脑开始受伤。.:(
我需要隐藏一个整数,以便它适合3字节数组。(是24位整数吗?),然后再次返回以通过套接字从字节流中发送/接收此数字。
我有:
NSMutableData* data = [NSMutableData data];
int msg = 125;
const void *bytes[3];
bytes[0] = msg;
bytes[1] = msg >> 8;
bytes[2] = msg >> 16;
[data appendBytes:bytes length:3];
NSLog(@"rtn: %d", [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] intValue]);
//log brings back 0
我想我的主要问题是我不知道如何检查我是否确实正确转换了我的int,这是我发送数据也需要做的转换。
任何帮助,不胜感激!
最佳答案
您可以使用联合:
union convert {
int i;
unsigned char c[3];
};
从int转换为字节:
union convert cvt;
cvt.i = ...
// now you can use cvt.c[0], cvt.c[1] & cvt.c[2]
从字节转换为整数:
union convert cvt;
cvt.i = 0; // to clear the high byte
cvt.c[0] = ...
cvt.c[1] = ...
cvt.c[2] = ...
// now you can use cvt.i
注意:以这种方式使用并集依赖于处理器字节顺序。我给出的示例将在小端系统(如x86)上工作。