iOS:如何将NSData的长度添加为两个字节的头?

时间:2013-03-08 21:32:51

标签: iphone ios nsdata nsmutabledata

我有一个NSData,我想在其标题中将其长度作为十六进制数字追加。我可以使用以下代码执行此操作:

unsigned int len = [data length];

NSMutableData *sendData = [[NSMutableData alloc] initWithBytes:&len length:2];
[sendData appendData:data];

len = 5的上述代码的结果是“05 00”,但我想要“00 05”。有谁知道怎么做?

标题总是长度为2。

谢谢,

1 个答案:

答案 0 :(得分:2)

下面的代码(正如你所做)表示长度小于65536(两个字节)。所以你需要使用:

uint16_t len = CFSwapInt16HostToBig([data length]);
NSMutableData *sendData = [[NSMutableData alloc] initWithBytes:&len length:2];
[sendData appendData:data];

可用功能列表在下面的apple开发者库中的de document中描述:

Byte-Order Utilities Reference