/// <summary> /// Emulates the Java function "String..hashCode()". /// </summary> /// <param name="Texto">Any valid string.</param> /// <returns>Returns the emulated Java hash code as a 32 bit integer.</returns> internal static int Obtener_Código_Hash_String(string Texto) { try { if (!string.IsNullOrEmpty(Texto)) { List <int> Lista_Base = Calculadora_Infinita.Traducir_Número("31"); List <int> Lista_Multiplicador = new List <int>(new int[] { 1 }); List <int> Lista_Valor = new List <int>(new int[] { 0 }); for (int Índice = Texto.Length - 1, Índice_Potencia = 0; Índice >= 0; Índice--, Índice_Potencia++) { try { int Valor_Caracter = (int)Texto[Índice]; List <int> Lista_Multiplicación = Calculadora_Infinita.Operación_Multiplicación(Calculadora_Infinita.Traducir_Número(Valor_Caracter.ToString()), Lista_Multiplicador); Lista_Valor = Calculadora_Infinita.Operación_Suma(Lista_Valor, Lista_Multiplicación); if (Índice > 0) { Lista_Multiplicador = Calculadora_Infinita.Operación_Multiplicación(Lista_Multiplicador, Lista_Base); } } catch { break; } } List <List <int> > Lista_Valor_Binario = Calculadora_Infinita.Operación_Convertir_a_Base(Lista_Valor, new List <int>(new int[] { 2 })); return(int.Parse(Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 31), Math.Min(31, Lista_Valor_Binario.Count)), new List <int>(new int[] { 2 })), Lista_Valor_Binario.Count > 31 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 32][0] != 0 ? new List <int>(new int[] { 2, 1, 4, 7, 4, 8, 3, 6, 4, 8 }) : new List <int>(new int[] { 0 }))))); //Lista_Valor_Binario = null; //Lista_Valor = null; //Lista_Multiplicador = null; //Lista_Base = null; } } catch (Exception Excepción) { Depurador.Escribir_Excepción(Excepción != null ? Excepción.ToString() : null); } return(0); }
internal decimal Calcular_Semilla(string Texto, int Base) { try { this.Cursor = Cursors.WaitCursor; TextBox_Semilla.Text = null; TextBox_Resultados.Text = null; if (!string.IsNullOrEmpty(Texto) && Base >= 1)// && Base <= 1024) { string Texto_Operaciones = null; List <int> Lista_Base = Calculadora_Infinita.Traducir_Número(Base.ToString()); List <int> Lista_Multiplicador = new List <int>(new int[] { 1 }); List <int> Lista_Valor = new List <int>(new int[] { 0 }); for (int Índice = Texto.Length - 1, Índice_Potencia = 0; Índice >= 0; Índice--, Índice_Potencia++) { try { int Valor_Caracter = (int)Texto[Índice]; List <int> Lista_Multiplicación = Calculadora_Infinita.Operación_Multiplicación(Calculadora_Infinita.Traducir_Número(Valor_Caracter.ToString()), Lista_Multiplicador); Lista_Valor = Calculadora_Infinita.Operación_Suma(Lista_Valor, Lista_Multiplicación); if (Índice > 0) { Lista_Multiplicador = Calculadora_Infinita.Operación_Multiplicación(Lista_Multiplicador, Lista_Base); } Texto_Operaciones += Texto[Índice] + " = " + Valor_Caracter.ToString() + " * (" + Program.Traducir_Número(Base) + "^" + Índice_Potencia.ToString() + ") = " + /*Valor_Caracter.ToString() + " * " + Calculadora_Infinita.Traducir_Número(Lista_Multiplicador) + " = " + */ Calculadora_Infinita.Traducir_Número(Lista_Multiplicación) + "\r\n"; } catch { break; } } Texto_Operaciones += "\r\nAdding all the previous results will give the full seed."; List <List <int> > Lista_Valor_Binario = Calculadora_Infinita.Operación_Convertir_a_Base(Lista_Valor, new List <int>(new int[] { 2 })); Texto_Operaciones += "\r\n\r\n"; //Texto_Operaciones += "Minecraft seed (in ): " + Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Lista_Valor) + "\r\n\r\n"; Texto_Operaciones += "Full seed of infinite bits: " + Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Lista_Valor) + "\r\n\r\n"; for (int Índice = 64, Índice_1 = 63; Índice >= 1; Índice--, Índice_1--) { Texto_Operaciones += Índice.ToString() + (Índice != 1 ? " bits seed = " : " bit seed = ") + Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - Índice_1), Math.Min(Índice_1, Lista_Valor_Binario.Count)), new List <int>(new int[] { 2 })), Lista_Valor_Binario.Count >= Índice && Lista_Valor_Binario[Lista_Valor_Binario.Count - Índice][0] != 0 ? Listas_Bits_64[Índice_1] : new List <int>(new int[] { 0 }))) + (Índice > 1 ? "\r\n" : null); } TextBox_Semilla.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 31), Math.Min(31, Lista_Valor_Binario.Count)), new List <int>(new int[] { 2 })), Lista_Valor_Binario.Count > 31 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 32][0] != 0 ? new List <int>(new int[] { 2, 1, 4, 7, 4, 8, 3, 6, 4, 8 }) : new List <int>(new int[] { 0 }))); //Descodificar_Semilla_Numérica(TextBox_Semilla.Text); // 28-04-2018. //Obtener_Texto_Semilla(TextBox_Semilla.Text); // 13-03-2019. TextBox_Resultados.Text = Texto_Operaciones; /*Text_Semilla_Personalizada.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - (Bits_Global - 1)), Math.Min(Bits_Global - 1, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count >= Bits_Global && Lista_Valor_Binario[Lista_Valor_Binario.Count - Bits_Global][0] != 0 ? Calculadora_Infinita.Operación_Potencia(new List<int>(new int[] { 2 }), Calculadora_Infinita.Traducir_Número((Bits_Global - 1).ToString())) : new List<int>(new int[] { 0 }))); * * * Text_Semilla_8_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 7), Math.Min(7, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 7 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 8][0] != 0 ? new List<int>(new int[] { 1, 2, 8 }) : new List<int>(new int[] { 0 }))); * Text_Semilla_16_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 15), Math.Min(15, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 15 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 16][0] != 0 ? new List<int>(new int[] { 3, 2, 7, 6, 8 }) : new List<int>(new int[] { 0 }))); * Text_Semilla_32_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 31), Math.Min(31, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 31 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 32][0] != 0 ? new List<int>(new int[] { 2, 1, 4, 7, 4, 8, 3, 6, 4, 8 }) : new List<int>(new int[] { 0 }))); * Text_Semilla_64_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 63), Math.Min(63, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 63 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 64][0] != 0 ? new List<int>(new int[] { 9, 2, 2, 3, 3, 7, 2, 0, 3, 6, 8, 5, 4, 7, 7, 5, 8, 0, 8 }) : new List<int>(new int[] { 0 }))); * //Text_Semilla_128_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 127), Math.Min(127, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 127 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 128][0] != 0 ? Ventana_Calculadora_Infinita.Traducir_Número("170141183460469231731687303715884105728") : new List<int>(new int[] { 0 }))); ; * //Text_Semilla_256_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 255), Math.Min(255, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 255 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 256][0] != 0 ? Ventana_Calculadora_Infinita.Traducir_Número("170141183460469231731687303715884105728") : new List<int>(new int[] { 0 }))); ; * Text_Semilla_Completa.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Lista_Valor);*/ Lista_Valor_Binario = null; Lista_Valor = null; Lista_Multiplicador = null; Lista_Base = null; } /*Text_Operaciones.Refresh(); * Text_Semilla_8_Bits.Refresh(); * Text_Semilla_16_Bits.Refresh(); * Text_Semilla_32_Bits.Refresh(); * Text_Semilla_64_Bits.Refresh(); * Text_Semilla_Completa.Refresh();*/ } catch (Exception Excepción) { Depurador.Escribir_Excepción(Excepción != null ? Excepción.ToString() : null); } finally { this.Cursor = Cursors.Default; } return(0m); }