尝试编写代码来生成1mb文件,但它仍然会达到8.4mb

时间:2015-07-20 11:05:01

标签: objective-c xcode filesize

我还不是很好,但到目前为止我的代码

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。

请帮忙,我无法弄清楚。

2 个答案:

答案 0 :(得分:0)

更改

int numberOfBits = 8388608;

int numberOfBits = 1000000;

它应该被称为numberOfBytes - 每个int数字都需要一个字节而不是一点。

答案 1 :(得分:0)

您的数组包含8388608个数字,每个数字都是01。加入这些数字产生的字符串的长度也为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:]