2015-07-20 21 views
0

我不擅長,但還沒有我的代碼到目前爲止試圖編寫代碼來生成1MB的文件,但它一直到來up8.4mb

int numberOfBits=8388608; 
NSString*[email protected]"/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

change

int numberOfBits = 8388608;

int numberOfBits = 1000000;

它應該真的被稱爲numberOfBytes - 每個int數字都需要一個字節沒有一點。

+0

謝謝ajg,它現在正常工作;)。 – 13rianC

0

您的數組包含8388608每個數字是01。加入這些數字後得到的字符串的長度也爲8388608。當你使用[NSString writeToFile: atomically:]沒有特定的編碼時,它似乎回退到使用ASCII,這意味着每個字符一個字節。所以8388608字符將被8產生

8388608 bytes = (8388608/1024/1024) mega bytes = 8 mega bytes 

如果你所需的文件大小是一個兆字節,分numberOfBits

順便說一句,[NSString writeToFile: atomically:]已棄用,支持更具體的變種[NSString writeToFile: atomically: encoding: error:]

相關問題