Beste Weg, um zu generieren NSData-Objekt mit zufälligen bytes einer bestimmten Länge?
Wenn ich eine neue NSData-Objekt in einer bestimmten Größe mit dataWithBytes:Länge:, was ist der effizienteste Weg, um erstellen Sie die input-bytes (20 Mb Wert) von zufälligen Zeichen, möglichst ohne das Lesen der Daten aus einer Datei? Ich brauche eine einzigartige Puffer einer bestimmten Größe jeder Zeit.
Dank
InformationsquelleAutor der Frage Bama91 | 2011-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen ein 20*2^20 B
NSData
Objekt, dann fügen Sie eine zufällige 4-byte integer zu 20*2^20/4 mal mitarc4random()
. Ich glaube, Sie brauchen, umstdlib.h
(über Erzeugung von Zufallszahlen in Objective-C).InformationsquelleAutor der Antwort Thomson Comer
Die bytes sind nicht 'zufällig', sondern Müll enthalten Werte (was auch immer wurde über den Haufen, bevor diese ausgeführt wurde). Der Vorteil, es ist schnell und der code ist übersichtlich.
InformationsquelleAutor der Antwort Robert
Hier ein 3-liner swift version:
Swift 2
Swift 3
InformationsquelleAutor der Antwort Loïs Di Qual
Könnten Sie in Erwägung ziehen mit
CCRandomGenerateBytes
Funktion vonCommonCrypto
zufällige Daten erzeugt. Wie:InformationsquelleAutor der Antwort sgl0v
Die original-version hat einen bug, aber mir kümmert, und hoffentlich nicht einführen, neue.
Hoffe, es hilft.
Hier ist der unit-test:
InformationsquelleAutor der Antwort lifeanxiety
Swift 3:
InformationsquelleAutor der Antwort garafajon
urandom ist effizienter.
Hier eine Kategorie zu generieren, die zufällig Puffer:
InformationsquelleAutor der Antwort Gilad Novik
Habe ich open-Source-meine JFRandom Klasse auf github, das kann genau das tun. Hier ist ein blog-post zeigt, wie man erhalten/verwenden Sie es, um Ihr Ziel zu erreichen...
http://jayfuerstenberg.com/devblog/generating-random-numbers-strings-and-data-in-objective-c
InformationsquelleAutor der Antwort Jason Fuerstenberg