我将如何去附加这个二进制字符串
111000111000111111000111000111
到NSMutableData
包含png
( NSMutableData *dataForPNGFile = UIImagePNGRepresentation(p.Image);
)的对象
我将如何去附加这个二进制字符串
111000111000111111000111000111
到NSMutableData
包含png
( NSMutableData *dataForPNGFile = UIImagePNGRepresentation(p.Image);
)的对象
您需要将字符串解析为NSData
,然后附加它。
我不知道任何内置的东西,所以例如
NSMutableData *data = [NSMutableData dataWithLength(string.length+7)/8];
uint8_t *mutableBytes = (uint8_t *)data.mutableBytes;
for(NSUinteger index = 0; index < string.length; index++)
{
unichar character = [string characterAtIndex:index];
mutableBytes[index >> 3] <<= 1;
if(character == '1') mutableBytes[index >> 3] |= 1;
}
if(string.length&7)
mutableBytes[string.length >> 3] <<= (7 - (string.length&7));
因此假设您的源字符串只有 1 和 0,它是从最高有效位到最低有效位写入的,并且它是字节而不是面向字的。
此外,UIImagePNGRepresentation
返回不可变数据,因此您需要获取该数据的可变副本。
查看 NSMuteableData 方法 appendBytes:length:
正如@Tommy 所说,您必须将您的位转换为字节。