Best way to generate NSData object with random bytes of a specific length?

后端 未结 9 1319
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-05 11:37

If I create a new NSData object of a specific size using dataWithBytes:length:, what is the most efficient way to create the input bytes (20 Mb worth) of random characters, pref

9条回答
  •  独厮守ぢ
    2021-02-05 12:23

    You can create a 20*2^20b NSData object, then append a random 4 byte integer to it 20*2^20/4 times with arc4random(). I believe you need to include stdlib.h (via Generating random numbers in Objective-C).

    #include 
    
    -(NSData*)create20mbRandomNSData
    {
      int twentyMb           = 20971520;
      NSMutableData* theData = [NSMutableData dataWithCapacity:twentyMb];
      for( unsigned int i = 0 ; i < twentyMb/4 ; ++i )
      { 
        u_int32_t randomBits = arc4random();
        [theData appendBytes:(void*)&randomBits length:4];
      }
      return theData;
    }
    

提交回复
热议问题