目标c,相当于C#中的CopyTo

时间:2012-12-13 21:16:36

标签: objective-c

我有一个C#代码,它将字节从特定索引复制到一个字节数组,如下例所示:

string headerInfo = String.Format(source + "<>" + destination + "<>" + sessionId);
headerInfo = headerInfo.TrimEnd('\n', '\0', '\r');
byte[] headerInfoBytes = Encoding.UTF8.GetBytes(headerInfo);
byte[] headerInfoLength = BitConverter.GetBytes(headerInfo.Length);

//create an byte Array with proper size.
byte[] sendData = new byte[4 + 4 + headerInfoBytes.Length + dataContractBytes.Length];

headerInfoLength.CopyTo(sendData, 0);
dataContractLengthBytes.CopyTo(sendData, 4);
headerInfoBytes.CopyTo(sendData, 8);
dataContractBytes.CopyTo(sendData, 8 + headerInfoBytes.Length);
m_clientSocket.Send(sendData);

我的问题是,如何以客观的方式实现CopyTo?

1 个答案:

答案 0 :(得分:0)

查看this guide如何处理可变数据。

如果您特别需要索引部分,则可以使用replaceBytesInRange:withBytes:。否则,只需附加数据:

NSString *headerInfo = [NSString stringWithFormat:@"%@<>%@<>%@", source, destination, sessionId];
NSData *headerData = [headerInfo dataUsingEncoding:NSUTF8StringEncoding];

NSMutableData *data = [NSMutableData dataWithCapacity:headerData.length + ...];
[data appendData:headerData];