¿Cómo puedo generar un número hexadecimal aleatorio con una longitud de mi elección usando C#?Número hexadecimal generado aleatoriamente en C#
Respuesta
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() toma argumentos que le permiten especificar un mínimo y un valor máximo, por lo que es como se le controlar la longitud.
Depende de qué tan aleatorio lo desee, pero aquí hay 3 alternativas: 1) Usualmente solo uso Guid.NewGuid y selecciono una parte (dep. De la cantidad de números que quiero).
2) System.Random (ver otras respuestas) es bueno si solo quieres 'al azar'.
3) System.Security.Cryptography.RNGCryptoServiceProvider
Cortar un GUID parece una una mala idea para mí. Solo son únicos tomados como un todo. Muchos bits de un GUID ciertamente no califican como aleatorios. – spender
@spender es correcto, por ejemplo, muchos GUID contienen la dirección MAC de la PC que los genera. –
Eh, no, las guías basadas en mac direcciones se retiraron en 2000-ish ya que se consideraron un posible problema de seguridad. Los GUID ahora se generan mediante un generador de números aleatorios (122 bits aleatorios, 6 bits no aleatorios). De cualquier manera, usar un segmento de 32 bits (o más) de un guid da un número más aleatorio que System.Random. Eso es, a menos que llame a UuidCreateSequential que se agregó para compatibilidad con versiones anteriores en caso de que alguien quiera guiones de estilo antiguo, pero esa es una historia diferente. – KristoferA
Aquí hay uno que devolver una cadena hexadecimal de 256 bits (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. ¿Cuál es la diferencia entre un número generado aleatoriamente y un número seguro generado aleatoriamente?
- 2. u en número hexadecimal C/C++
- 3. C++ formato de número hexadecimal
- 4. Formateo de número hexadecimal en Javascript
- 5. Convierta un número en el valor hexadecimal en .NET
- 6. número de dígitos en un código de escape hexadecimal en C/C++
- 7. constante flotante hexadecimal en C
- 8. Expresión regular para un número hexadecimal?
- 9. MySQL: ¿Por qué la comparación de la clave principal con un número generado aleatoriamente no utiliza el índice?
- 10. C constante hexadecimal tipo
- 11. ¿Cómo convierto una cadena que se parece a un número hexadecimal a un número hexadecimal real en php?
- 12. ¿Cómo puedo convertir el número hexadecimal en enteros y cadenas en el Objetivo C?
- 13. Conversión de un número hexadecimal a binario en ruby
- 14. ¿Cómo puedo convertir un número decimal a hexadecimal en VIM?
- 15. ¿Debería almacenarse hash de contraseña en número binario o hexadecimal?
- 16. C# Construir notación hexadecimal cadena
- 17. Constante hexadecimal sin signo en C?
- 18. Convierte una cadena hexadecimal a un número entero de manera eficiente en C?
- 19. C# Cómo formatear un número en un hexadecimal con un prefijo '0x'
- 20. Inicializar matriz de bytes sin signo utilizando número hexadecimal
- 21. C#, notación hexadecimal y enteros con signo
- 22. C# Convertir Char a Byte (representación hexadecimal)
- 23. C# convierte entero a hexadecimal y viceversa
- 24. matriz de caracteres a cadena hexadecimal C++
- 25. Vim sustituye a Regex con números generados aleatoriamente
- 26. 0x00000000 hexadecimal?
- 27. IEEE 754 del flotador a hexadecimal con c - printf
- 28. Invertir número en C#
- 29. Número grande en C++
- 30. Suprime la advertencia para código C# generado
que va a trabajar sólo si 'longitud <= 8' como 'int.MaxValue' cabe en 8 dígitos hexadecimales. –
Si realmente quiere que la cadena hexagonal tenga la longitud que elija, necesitará un código que calcule el número mínimo con la longitud hex 'x' y el máximo con la longitud 'x'. – colithium
Sí. Lo dejé a propósito, ¿pero básicamente tendrías que hacer una conversión en 0xF? ('scuse mi expresión regular) para encontrar cualquier número entero que coincida con la longitud deseada. – womp