| |
|
221
|
Programación / Java / Re: Traducir este código de C# a Java
|
en: 22 Abril 2020, 22:19 pm
|
Hola rub'n, y qué hay del método Zip.Decompress? Lo dejo como tú me lo compartiste? En caso de ser así ya me larga error en esta línea: try(final ByteArrayInputStream bis = new ByteArrayInputStream(data);
El error es: Missing ')'. Cómo podría solucionarlo? Muchísimas gracias por tu ayuda y saludos
|
|
|
|
|
222
|
Programación / Java / Re: Traducir este código de C# a Java
|
en: 22 Abril 2020, 21:36 pm
|
Hola rub'n, muchas gracias por preguntar. Lo que en realidad quiero hacer es descifrar Hashlinks con Java (traduciendo un código de C# con el cual ya se puede hacer eso). Y en este link empieza la historia: https://github.com/AresChat/cb0t/blob/37b45f81a1b61355423475f1f9cb519de74e7b52/cb0t/Misc/Hashlink.csEmpieza, en especial en este código (en el comentario te muestro hasta donde traduci): public static DecryptedHashlink DecodeHashlink(String hashlink) { DecryptedHashlink room = new DecryptedHashlink();
try { if (hashlink.ToUpper().StartsWith("CHATROOM:")) // not encrypted { hashlink = hashlink.Substring(9); int split = hashlink.IndexOf(":"); room.IP = IPAddress.Parse(hashlink.Substring(0, split)); hashlink = hashlink.Substring(split + 1); split = hashlink.IndexOf("|"); room.Port = ushort.Parse(hashlink.Substring(0, split)); room.Name = hashlink.Substring(split + 1); return room; } else // encrypted { byte[] buf = Convert.FromBase64String(hashlink); buf = d67(buf, 28435); //hasta ahí pude traducir sin problemas buf = Zip.Decompress(buf);
HashlinkReader reader = new HashlinkReader(buf); reader.SkipBytes(32); room.IP = reader; room.Port = reader; reader.SkipBytes(4); room.Name = reader;
return room; } } catch // badly formed hashlink { return null; } }
Y ahí está el método Zip.Decompress(): https://github.com/AresChat/cb0t/blob/37b45f81a1b61355423475f1f9cb519de74e7b52/cb0t/Misc/Zip.csEl método Zip.Decompress() es el del que trata este post. Muchísimas gracias y muchos saludos
|
|
|
|
|
223
|
Programación / Java / Re: Traducir este código de C# a Java
|
en: 22 Abril 2020, 19:02 pm
|
Hola rub'n, ¡¡wow!! El único detalle que se me olvidó comentar fue que la clase InflaterInputStream que mostré en el pequeño código se refiere a esta clase: https://github.com/icsharpcode/SharpZipLib/blob/master/src/ICSharpCode.SharpZipLib/Zip/Compression/Streams/InflaterInputStream.csComo no necesito todo el contenido, no quería traducir todo. Pero solamente pude traducir cómo pasar parámetros de un constructor a otro. Nada más  : public class InflaterInputStream { public InflaterInputStream(Stream baseInputStream) { this(baseInputStream, new Inflater(), 4096); }
/// <summary> /// Create an InflaterInputStream with the specified decompressor /// and a default buffer size of 4KB. /// </summary> /// <param name = "baseInputStream"> /// The source of input data /// </param> /// <param name = "inf"> /// The decompressor used to decompress data read from baseInputStream /// </param>
/// <summary> /// Create an InflaterInputStream with the specified decompressor /// and the specified buffer size. /// </summary> /// <param name = "baseInputStream"> /// The InputStream to read bytes from /// </param> /// <param name = "inflater"> /// The decompressor to use /// </param> /// <param name = "bufferSize"> /// Size of the buffer to use /// </param> public InflaterInputStream(Stream baseInputStream, Inflater inflater, int bufferSize) { if (baseInputStream == null) { throw new ArgumentNullException(nameof(baseInputStream)); }
if (inflater == null) { throw new ArgumentNullException(nameof(inflater)); }
if (bufferSize <= 0) { throw new ArgumentOutOfRangeException(nameof(bufferSize)); }
this.baseInputStream = baseInputStream; this.inf = inflater;
inputBuffer = new InflaterInputBuffer(baseInputStream, bufferSize); } }
En especial no se cómo crear un objeto de Stream como en el código. Se tendría que modificar el código que tú compartiste si se tiene en cuenta que InflaterInputStream no es lo que quizás tú pensaste que era? Aunque quizás no se tenga que cambiar tu código --> https://icsharpcode.github.io/SharpZipLib/help/api/ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.htmlEn ese link sale el autor original de Java... Muchísimas gracias y muchos saludos
|
|
|
|
|
224
|
Programación / Java / Traducir este código de C# a Java
|
en: 22 Abril 2020, 14:51 pm
|
Hola a todos, ¿alguien me puede ayudar, por favor, a traducir este pequeño código de C# a Java? public static byte[] Decompress(byte[] data) { try { byte[] r = null;
using (MemoryStream ms = new MemoryStream(data)) using (Stream s = new InflaterInputStream(ms)) { List<byte> list = new List<byte>(); int count = 0; byte[] b = new byte[8192];
while ((count = s.Read(b, 0, 8192)) > 0) list.AddRange(b.Take(count));
r = list.ToArray(); list.Clear(); list = null; }
return r; } catch { }
return new byte[] { }; }
En especial, no se cómo programar estás dos líneas con Java: using (MemoryStream ms = new MemoryStream(data)) using (Stream s = new InflaterInputStream(ms))
Ya que en Java reemplazo el using por el try. Pero no funciona si lo hago dos veces en este caso. Gracias y saludos
|
|
|
|
|
226
|
Foros Generales / Dudas Generales / Re: Número virtual para Whatsapp
|
en: 7 Abril 2020, 16:50 pm
|
|
Hola Shell Root,
al ingresar con mi cuenta de Google dice que ingrese el codigo de area. Mi codigo de area tiene 4 digitos pero solo me deja poner hasta 3 digitos.
No importa que codigo de area ingreso?
Gracias y saludos
|
|
|
|
|
229
|
Programación / Desarrollo Web / javascript - Generador Sudoku
|
en: 3 Enero 2020, 19:39 pm
|
Hola a todos, aquí hay otra vez un javascript del usuario “Totalmente automático” (muchas gracias!). Se trata de un generador Sudoku, en el cual ustedes mismos podrán elegir el grado de dificultad. En breve la explicación del juego para todos quienes todavía no lo conocen. El objetivo del Sodoku es ubicar los números del 1 al 9 tanto verticalmente como también horizontalmente como también dentro de los bloques 3x3 correspondientes de tal manera que en cada fila, en cada columna y en cada bloque esos números respectivamente figuren solo una vez. Si se ha logrado esto, el Sodoku esta solucionado. Pues bien, que se diviertan desvanandose los sesos en el Sodoku  Código: <!DOCTYPE html> <html> <head> <title>Ejemplo de javascript</title> <meta charset="UTF-8"> </head> <body> <!-- Presentado por javascripts-gratis.de --> <script type='text/javascript'> <!-- // (c) Copyright by Totalmente automatico 2007 /////// var estadoSudoku = 1; // Ingresar aqui si el sudoku debe imprimirse completamente (3) o solamente condicionado (1) ///////
// Sry, ni idea de donde tengo el segmento hasta ***... :-| // --> Google tiene la culpa... function arrayShuffle(){ var tmp, borde; for(var i =0; i < this.length; i++) { borde = Math.floor(Math.random() * this.length); tmp = this[i]; this[i] = this[borde]; this[borde] =tmp; } } Array.prototype.shuffle = arrayShuffle; // ********
function sudoku_reset() { for (var i = 1; i <= 81; i++) { document.getElementById('celdaSudoku'+i).value = ""; } }
function generar_sudoku () { var campos = new Array(); sudoku_reset(); var cola = new Array(1,2,3,4,5,6,7,8,9); cola.shuffle(); for (var i = 1; i <= 81; i++) { campos[i-1] = cola[(i-1)%9]; if (i %9 == 0) { var camino1 = cola[0]; var camino2 = cola[1]; var camino3 = cola[2]; cola.shift(); cola.shift(); cola.shift(); cola[6] = camino1; cola[7] = camino2; cola[8] = camino3; } if (i %27 == 0) { var camino = cola[0]; cola.shift(); cola[8] = camino; } }
for (var cantidad = 0; cantidad < 400; cantidad++) // 400 colas sustituidas! { if (Math.random() >= 0.333) { var betr_cola_1 = parseInt(Math.random() * 9); if (betr_cola_1 == 0) { if (Math.random() > 0.5) { betr_cola_2 = 1; } else { betr_cola_2 = 2; } } if (betr_cola_1 == 1) { if (Math.random() > 0.5) { betr_cola_2 = 0; } else { betr_cola_2 = 2; } } if (betr_cola_1 == 2) { if (Math.random() > 0.5) { betr_cola_2 = 1; } else { betr_cola_2 = 0; } } if (betr_cola_1 == 3) { if (Math.random() > 0.5) { betr_cola_2 = 4; } else { betr_cola_2 = 5; } } if (betr_cola_1 == 4) { if (Math.random() > 0.5) { betr_cola_2 = 3; } else { betr_cola_2 = 5; } } if (betr_cola_1 == 5) { if (Math.random() > 0.5) { betr_cola_2 = 4; } else { betr_cola_2 = 3; } } if (betr_cola_1 == 6) { if (Math.random() > 0.5) { betr_cola_2 = 7; } else { betr_cola_2 = 8; } } if (betr_cola_1 == 7) { if (Math.random() > 0.5) { betr_cola_2 = 6; } else { betr_cola_2 = 8; } } if (betr_cola_1 == 8) { if (Math.random() > 0.5) { betr_cola_2 = 7; } else { betr_cola_2 = 6; } } var entre = new Array();
for (var i = 0; i <= 8; i++) { entre[i] = campos[betr_cola_1 * 9 + i]; } for (var i = 0; i <= 8; i++) { campos[betr_cola_1 * 9 + i] = campos[betr_cola_2 * 9 + i]; } for (var i = 0; i <= 8; i++) { campos[betr_cola_2 * 9 + i] = entre[i]; } }
else if (Math.random() >= 0.666) { var betr_columna_1 = parseInt(Math.random() * 9); if (betr_columna_1 == 0) { if (Math.random() > 0.5) { betr_columna_2 = 1; } else { betr_columna_2 = 2; } } if (betr_columna_1 == 1) { if (Math.random() > 0.5) { betr_columna_2 = 0; } else { betr_columna_2 = 2; } } if (betr_columna_1 == 2) { if (Math.random() > 0.5) { betr_columna_2 = 1; } else { betr_columna_2 = 0; } } if (betr_columna_1 == 3) { if (Math.random() > 0.5) { betr_columna_2 = 4; } else { betr_columna_2 = 5; } } if (betr_columna_1 == 4) { if (Math.random() > 0.5) { betr_columna_2 = 3; } else { betr_columna_2 = 5; } } if (betr_columna_1 == 5) { if (Math.random() > 0.5) { betr_columna_2 = 4; } else { betr_columna_2 = 3; } } if (betr_columna_1 == 6) { if (Math.random() > 0.5) { betr_columna_2 = 7; } else { betr_columna_2 = 8; } } if (betr_columna_1 == 7) { if (Math.random() > 0.5) { betr_columna_2 = 6; } else { betr_columna_2 = 8; } } if (betr_columna_1 == 8) { if (Math.random() > 0.5) { betr_columna_2 = 7; } else { betr_columna_2 = 6; } } var entre = new Array();
for (var i = 0; i <= 8; i++) { entre[i] = campos[betr_columna_1 + i * 9]; } for (var i = 0; i <= 8; i++) { campos[betr_columna_1 + i * 9] = campos[betr_columna_2 + i * 9]; } for (var i = 0; i <= 8; i++) { campos[betr_columna_2 + i * 9] = entre[i]; } }
else { var betr_cola_bloque_1 = parseInt(Math.random() * 3); if (betr_cola_bloque_1 == 0) { if (Math.random() > 0.5) { betr_cola_bloque_2 = 1; } else { betr_cola_bloque_2 = 2; } } if (betr_cola_bloque_1 == 1) { if (Math.random() > 0.5) { betr_cola_bloque_2 = 0; } else { betr_cola_bloque_2 = 2; } } if (betr_cola_bloque_1 == 2) { if (Math.random() > 0.5) { betr_cola_bloque_2 = 0; } else { betr_cola_bloque_2 = 1; } } var entre = new Array();
for (var i = 0; i <= 26; i++) { entre[i] = campos[betr_cola_bloque_1 * 27 + i]; } for (var i = 0; i <= 26; i++) { campos[betr_cola_bloque_1 * 27 + i] = campos[betr_cola_bloque_2 * 27 + i]; } for (var i = 0; i <= 26; i++) { campos[betr_cola_bloque_2 * 27 + i] = entre[i]; } } }
if (document.getElementById('difiSudoku0').checked == true) { number = 36; } if (document.getElementById('difiSudoku1').checked == true) { number = 30; } if (document.getElementById('difiSudoku2').checked == true) { number = 26; } if (document.getElementById('difiSudoku3').checked == true) { number = 22; } var cuales = new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81); cuales.shuffle(); estado = document.getElementById('estadoSudoku').value; for (var i = 0; i < number*estado; i++) { for (var k = 1; k <= 81; k++) { if (cuales[0] == k) document.getElementById('celdaSudoku'+k).value = campos[k-1]; } cuales.shift(); } for (var i = 1; i <= 81; i++) { document.getElementById('celdaSudoku'+i+'_hid').value = campos[i-1]; } }
function resolver () { for (var i = 1; i <= 81; i++) { document.getElementById('celdaSudoku'+i).value = document.getElementById('celdaSudoku'+i+'_hid').value; } }
function sudokuInit() { document.write('<input type="hidden" name="estadoSudoku" id="estadoSudoku" value="1" />'); document.write('<h3 style="display: inline;">Tu propio Sudoku</h3>'); document.write('<br />'); document.write('<fieldset>'); document.write('<legend>Generador Sudoku</legend>'); document.write('<br />'); document.getElementById('estadoSudoku').value = 1;
document.write("<style type='text/css'>"); document.write(".input { border: 1px solid #000000; width: 25px; height: 25px; text-align: center; font-family: Arial; font-weight: bold; }"); document.write("fieldset { width: 50%; padding: 10px; float: center; margin-left: auto; margin-right: auto; }"); document.write("</style>"); for (var j = 1; j <= 1; j++) { for (var i = 1; i <= 81; i++) { document.write("<input type='text' name='celdaSudoku"+i+"' id='celdaSudoku"+i+"' maxlength='1' style='overflow: hidden' class='input'> "); if (i %3 == 0){ document.write(" "); } if ( (i %9 == 0) && (i != 81) ){ document.write("<br />"); } if (i %27 == 0) { document.write("<br />"); } } } for (var i = 1; i <= 81; i++) { document.write("<input type='hidden' name='celdaSudoku"+i+"_hid' id='celdaSudoku"+i+"_hid' />"); }
document.write('<input type="radio" name="difi" id="difiSudoku0" checked="checked" /> <b>*</b> '); document.write('<input type="radio" name="difi" id="difiSudoku1" /> <b>**</b> '); document.write('<input type="radio" name="difi" id="difiSudoku2" /> <b>***</b> '); document.write('<input type="radio" name="difi" id="difiSudoku3" /> <b>****</b>'); document.write('<br /><br />'); document.write('<button onclick="generar_sudoku();">Generar</button>'); document.write(' '); document.write('<button onclick="sudoku_reset();">Desechar</button>'); document.write(' '); document.write('<button onclick="resolver();">Resolver</button>'); document.write('</fieldset>'); } //--> </script> <script type="text/javascript">sudokuInit();</script> <!-- Presentado por javascripts-gratis.de --> </body> </html>
Página web: https://drive.google.com/open?id=1LKzs8_a1B0JiVA76r3RjjUT24Nqd3RBrAutor: Totalmente automático Saludos
|
|
|
|
|
|
| |
|