Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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
Ios 将二进制字符串追加到NSMutableData_Ios_Nsmutabledata - Fatal编程技术网

Ios 将二进制字符串追加到NSMutableData

Ios 将二进制字符串追加到NSMutableData,ios,nsmutabledata,Ios,Nsmutabledata,我该如何追加这个二进制字符串 11100011000111100011110001111000111 指向包含png (NSMutableData*dataForPNGFile=UIImagePNGRepresentation(p.Image);)您需要将字符串解析为一个NSData,然后附加该字符串 我不知道里面有什么东西,所以 NSMutableData *data = [NSMutableData dataWithLength(string.length+7)/8]; uint8_t *m

我该如何追加这个二进制字符串

11100011000111100011110001111000111

指向包含
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));
NSMutableData*data=[NSMutableData dataWithLength(string.length+7)/8];
uint8_t*可变字节=(uint8_t*)data.mutableBytes;
对于(整数索引=0;索引>3]3]|=1;
}
if(字符串长度和7)

mutableBytes[string.length>>3]查看nsmutableData方法appendBytes:length:


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

您想将精确的位表示附加到某个NSMutableData对象的末尾吗?它是30位,所以这不会发生。充其量,你将不得不在一边或另一边扔进两块填充物。