-1

次の例に示すように、特定のインデックスからバイト配列にバイトをコピーする 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 を達成するにはどうすればよいですか?

4

1 に答える 1

0

可変データの処理方法については、このガイドをご覧ください。

インデックス部分が特に必要な場合は、 を使用できますreplaceBytesInRange:withBytes:。それ以外の場合は、データを追加するだけです:

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

NSMutableData *data = [NSMutableData dataWithCapacity:headerData.length + ...];
[data appendData:headerData];
于 2012-12-13T21:39:33.683 に答える