将二进制字符串附加到NSMutableData

时间:2012-09-13 17:09:38

标签: ios nsmutabledata

我将如何附加此二进制字符串

111000111000111111000111000111

到包含NSMutableData的{​​{1}}对象 (png

2 个答案:

答案 0 :(得分:1)

您需要将字符串解析为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会返回不可变数据,因此您需要获取该数据的可变副本。

答案 1 :(得分:0)

查看NSMuteableData方法appendBytes:length:

你必须将你的位转换为字节,如@Tommy所说。

相关问题