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

后端 未结 9 1504
佛祖请我去吃肉
佛祖请我去吃肉 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:16

    urandom is more efficient.

    Here is a category to generate random buffers:

    @interface NSMutableData(Random)
    +(id)randomDataWithLength:(NSUInteger)length;
    @end
    
    @implementation NSMutableData(Random)
    +(id)randomDataWithLength:(NSUInteger)length
    {
        NSMutableData* data=[NSMutableData dataWithLength:length];
        [[NSInputStream inputStreamWithFileAtPath:@"/dev/urandom"] read:(uint8_t*)[data mutableBytes] maxLength:length];
        return data;
    }
    @end
    

提交回复
热议问题