Olá Pessoal.
Recentemente tive a necessidade de gera um número hexa randômico no C#.
Desenvolvi este código simples, que compartilho com vocês.
using System; using System.Linq; namespace RandomHEXNumber { /// <summary> /// extensões para tipos randômicos /// </summary> public static class RandomExtensions { /// <summary> /// gera um número hexadecimal com tamanho de 4 dígitos /// </summary> /// <param name="random">instância do tipo Random</param> /// <returns>número hexa randomico</returns> public static string NextHex(this Random random) { return NextHex(random, 4); } /// <summary> /// gera um número hexadecimal com tamanho definido em digits /// </summary> /// <param name="random">instância do tipo Random</param> /// <param name="digits">quantidade de dígitos que o random deverá retornar</param> /// <returns>número hexa randomico</returns> public static string NextHex(this Random random, int digits) { //se estiver em um for, o random usa o milisegundos para gerar o número //logo pode causar numeros repetidos. Sendo assim vamos esperar 10 milisegundos System.Threading.Thread.Sleep(10); //array de bytes do random byte[] buffer = new byte[digits / 2]; //gerar o random random.NextBytes(buffer); //concatenar o buffer string result = String.Concat(buffer.Select(x => x.ToString("X2")).ToArray()); if (digits % 2 == 0) return result; //adiciona mais um dígito. result += random.Next(16).ToString("X"); return result; } } class Program { static void Main(string[] args) { Console.WriteLine("Gerando número hexa com tamanho padrão"); Console.WriteLine(new Random().NextHex()); Console.WriteLine(""); Console.WriteLine("Gerando número hexa com tamanho definido"); Console.WriteLine(new Random().NextHex(7)); Console.WriteLine(""); Console.WriteLine("Gerando número hexa em um laço"); for (int i = 1; i < 10; i++) { Console.WriteLine(new Random().NextHex(i)); } Console.ReadKey(); } } }
É isso ai pessoal 🙂
Até o próximo
♦ Marcelo