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)];