我还不是很好,但到目前为止我的代码
int numberOfBits=8388608;
NSString*outPutFolder=@"/Users/brian/Desktop/Megabytefile.txt";
NSMutableArray*starArray=[[NSMutableArray alloc]initWithCapacity:1];
for (int a=0; a<=numberOfBits; a++) {
int Randnum = arc4random() % 2;
[starArray addObject:[NSNumber numberWithInt:Randnum]];
}
NSLog(@"Your bit string=%@",[starArray componentsJoinedByString:@""]);
NSString*newfile= [starArray componentsJoinedByString:@""];
[newfile writeToFile:outPutFolder atomically:(YES)];
单击“运行”时,输出文件为8.4Mb而不是1Mb。
请帮忙,我无法弄清楚。
答案 0 :(得分:0)
更改
int numberOfBits = 8388608;
到
int numberOfBits = 1000000;
它应该被称为numberOfBytes - 每个int数字都需要一个字节而不是一点。
答案 1 :(得分:0)
您的数组包含8388608
个数字,每个数字都是0
或1
。加入这些数字产生的字符串的长度也为8388608
。当您使用没有特定编码的[NSString writeToFile: atomically:]
时,它似乎回退到使用ASCII,这意味着每个字符一个字节。所以8388608
个字符会产生
8388608 bytes = (8388608 / 1024 / 1024) mega bytes = 8 mega bytes
如果您需要的文件大小是一个兆字节,请将numberOfBits
除以8
。
顺便说一下,[NSString writeToFile: atomically:]
已被弃用,而不是更具体的变体[NSString writeToFile: atomically: encoding: error:]
。