Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在NSMutableData的前面插入字节_Objective C_Insert_Nsdata_Nsmutabledata - Fatal编程技术网

Objective c 在NSMutableData的前面插入字节

Objective c 在NSMutableData的前面插入字节,objective-c,insert,nsdata,nsmutabledata,Objective C,Insert,Nsdata,Nsmutabledata,如何在NSMutableData的开头插入字节?我知道有一个replaceBytesInRange:方法,但它只会替换字节。有一堆insertxatinex:方法,但没有一个用于字节。我该怎么做?我能想到的一种方法是: NSMutableData *theData = [NSMutableData dataWithBytes:myByte]; [theData appendData:myOriginalData]; myOriginalData = nil; 但一定有更好的办法 我也试过了,但

如何在
NSMutableData
的开头插入字节?我知道有一个
replaceBytesInRange:
方法,但它只会替换字节。有一堆
insertxatinex:
方法,但没有一个用于字节。我该怎么做?我能想到的一种方法是:

NSMutableData *theData = [NSMutableData dataWithBytes:myByte];
[theData appendData:myOriginalData];
myOriginalData = nil;
但一定有更好的办法

我也试过了,但没用:

char *sec = "Second!";
char *fir = "First!";

NSMutableData *theData = [NSMutableData dataWithBytes:(const void *)sec length:7];
[theData replaceBytesInRange:NSMakeRange(0, 0) withBytes:(const void *)fir];

NSString *str1 = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];
NSLog(@"%@", str1); //Prints "Second!"

应该这样做。

我还没有尝试过,但是使用
replaceBytesInRange:withBytes:
但是指定一个零长度范围怎么样?@rmaddy我尝试过,但是也没用。请看我的编辑,以确保我知道你的意思。我想这行不通。它必须查看范围长度,才能知道从'withBytes:'参数中获得多少字节。@rmaddy测试后,是的,确实如此。@rmaddy您的理论是正确的,长度为零的范围可以做到这一点。诀窍是您可以指定bytes.Nope的长度。只要第二个!首先!。啊,strlen的字符串搞错了。现在它为我打印“第一!第二!”。
[theData replaceBytesInRange:NSMakeRange(0, 0) withBytes:(const void *)fir length:strlen(fir)];