来自整数的NSData字节

时间:2013-02-13 22:09:31

标签: objective-c nsdata nsmutabledata

我有一个整数,值为2.我将它附加到NSMutableData对象:

[data appendBytes:&intVal length:2];

数字2是我想从int中获得的字节数。当我记录数据时,我想看到的是< 0002> (一个空字节后跟一个非空字节),但我得到的是< 0200>。

我错过了什么吗?字节的顺序和长度需要非常具体。这适用于直接套接字连接API。我不确定我在这里做错了什么。也许我只是读错了。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

  

我错过了什么吗?

是的,系统的字节顺序与您需要的字节序不匹配。将其转换为小端或大端(POSIX C库在<netinet.h><inet.h>标题中的某处具有用于此目的的函数。)

答案 1 :(得分:0)

NSData的描述方法以十六进制格式打印它的值。这意味着它需要4个数字来表示2个字节,每个字节可以映射2 ^ 8 = 256个不同的值,每个十六进制数字可以映射16个可能值,所以16x16x16x16 = 2 ^ 16,这正是你可以用2个字节映射的

答案 2 :(得分:0)

这是答案,它很棒!

uint16_t intVal = 2;
Byte *byteData = (Byte*)malloc(2);
byteData[1] = majorValue & 0xff;
byteData[0] = (majorValue & 0xff00) >> 8;
NSData * result = [NSData dataWithBytes:byteData length:sizeof(uint16_t)];
NSLog(@"result=%@",result);