Come posso generare un numero esadecimale casuale con una lunghezza di mia scelta utilizzando C#?Numero esadecimale generato in modo casuale in C#
risposta
static Random random = new Random();
public static string GetRandomHexNumber(int digits)
{
byte[] buffer = new byte[digits/2];
random.NextBytes(buffer);
string result = String.Concat(buffer.Select(x => x.ToString("X2")).ToArray());
if (digits % 2 == 0)
return result;
return result + random.Next(16).ToString("X");
}
Random random = new Random();
int num = random.Next();
string hexString = num.ToString("X");
random.Next() batte argomenti che consentono di specificare un minimo e un valore massimo, in modo che come si dovrebbe controllare la lunghezza.
Dipende dal modo in cui lo si desidera, ma qui ci sono 3 alternative: 1) Di solito uso Guid.NewGuid e ne seleziono una parte (in base alla quantità che desidero).
2) System.Random (vedere altre risposte) è buono se si desidera solo "abbastanza casuale".
3) System.Security.Cryptography.RNGCryptoServiceProvider
Affettare un GUID sembra un vera cattiva idea per me. Sono unici solo nel loro insieme. Molti bit di un GUID non sono certamente casuali. – spender
@spender è corretto, ad esempio molti GUID contengono l'indirizzo MAC del PC che li genera. –
Eh, no, i guids basati su mac-address sono stati ritirati nel 2000, poiché erano considerati un potenziale problema di sicurezza. I GUID sono ora generati da un generatore di numeri casuali (122 bit casuali, 6 bit non casuali). In entrambi i casi, l'uso di una porzione di bit 32 (o più) di un guid fornisce un numero più casuale di System.Random. Cioè, a meno che non chiami UuidCreateSequential che è stato aggiunto per compatibilità con le versioni precedenti nel caso in cui qualcuno volesse dei vecchi guai stile, ma questa è una storia diversa. – KristoferA
Ecco uno che avrebbe restituire una stringa esadecimale a 256 bit (8x8 = 256):
private static string RandomHexString()
{
// 64 character precision or 256-bits
Random rdm = new Random();
string hexValue = string.Empty;
int num;
for (int i = 0; i < 8; i++)
{
num = rdm.Next(0, int.MaxValue);
hexValue += num.ToString("X8");
}
return hexValue;
}
- 1. Genera un numero casuale con un numero casuale in Objective-C
- 2. C++ iterate vector in modo casuale
- 3. Numero casuale primo in python
- 4. Numero casuale in un loop
- 5. Formattazione del numero esadecimale in Javascript
- 6. Come generare un numero lungo in modo casuale nel clojure
- 7. Come generare un numero casuale in Swift senza ripetere il numero casuale precedente?
- 8. generando un numero casuale con una distribuzione specifica in c
- 9. numero casuale da -9 a 9 in C++
- 10. Produrre un numero casuale in un intervallo utilizzando C#
- 11. Numero casuale composto da 4 cifre in C#
- 12. Come generare il numero float casuale C
- 13. Conversione di esadecimale in stringa in C?
- 14. Generazione casuale numero CUDA
- 15. asp.net mvc C# generazione casuale stesso numero
- 16. Ruby, genera un colore esadecimale casuale
- 17. elm genera un numero casuale
- 18. Convertire doppia in esadecimale in C#
- 19. Converti stringa in stringa esadecimale in C#
- 20. Numero casuale in sdk per iphone?
- 21. Numero casuale non ripetitivo in numpy
- 22. Il modo migliore per generare un float casuale in C#
- 23. Come posso convertire un numero decimale in esadecimale in VIM?
- 24. come incrementare/decrementare valore esadecimale in C
- 25. Inizializza in modo casuale BitSet in JAVA
- 26. Convertire un numero nel valore esadecimale in .NET
- 27. GetRequestStream genera un'eccezione Timeout in modo casuale
- 28. Laravel 5.1 dati sessione in modo casuale
- 29. Come si converte una stringa che sembra un numero esadecimale in un numero esadecimale effettivo in php?
- 30. ldd numero esadecimale tra parentesi
che funzionerà solo se 'lunghezza <= 8' come 'int.MaxValue' corrisponde a 8 cifre esadecimali. –
Se davvero vuole che la stringa esadecimale abbia una lunghezza a sua scelta, è necessario un codice che calcoli il numero minimo con lunghezza esadecimale 'x' e massimo con lunghezza 'x'. – colithium
Sì. L'ho lasciato fuori di proposito, ma basteresti semplicemente fare una conversione su 0xF? ('scusa la mia espressione regolare) per trovare qualunque numero intero corrisponda alla lunghezza desiderata. – womp