【发布时间】:2014-07-08 01:05:30
【问题描述】:
如何在NSMutableData 的开头插入一个字节?我知道有一个 replaceBytesInRange: 方法,但这只会替换字节。有一堆 insertXAtIndex: 方法,但没有一个是用于字节的。我怎样才能做到这一点?我能想到的一种方法是:
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 您的理论是正确的,即零长度范围可以做到这一点。诀窍是您可以指定字节的长度。
标签: objective-c insert nsdata nsmutabledata