FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
A favor de 3077 (0C06h) es que es el único número de 0 - 65535 que consigue que CRC sea 5320 para el algoritmo implementado Saludos. |
#2
|
||||
|
||||
Hola a todos,
Je je je... vaya, que los has probado todos... Ya está comunicado esto al interesado... estamos aquí comunicándonos entre varios: ahora tengo que esperar la respuesta que le den a quien yo he contactado... Ciertamente, el 3077 tiene no poco a favor... sin embargo, aquí hay varias dudas: tal vez sea ese número el que haya que usar para inicializar la variable "crc", empero, se hace raro, entonces, que no lo mencionasen. Por lo demás, mencionan cierta documentación, que, luego parece no tener nada que ver... o sea... vamos a ver en qué queda todo esto. ¡Yo publicaré aquí lo que sea al final! Y muchas gracias de nuevo, escafandra, por tu interés y ayuda. |
#3
|
|||
|
|||
Dec, ¿Cual versión de Delphi estas utilizando?. Al migrar algoritmos similares desde Delphi 5 a Delphi XE3 ha sido necesario cambiar el tipo de datos de la variable que contiene la DATA de "String" a "AnsiString".
PostData: Ya hice la prueba y en este caso el cambiar a Ansistring no afecta el comportamiento. Última edición por orodriguezca fecha: 18-02-2020 a las 20:06:35. |
#4
|
||||
|
||||
Hola David.
Aunque tarde, por que ya el trabajo está hecho, te pongo los códigos que usé para mis pruebas. C++ Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 18-02-2020 a las 20:57:02. |
#5
|
||||
|
||||
Cita:
La versión C++ funciona Ok pero la delphi tiene un pequeño error. El bucle principal debe ser:
Esto se debe a que en la versión C primero decrementa y en la delphi es después. Posiblemente ha sido que has publicado un código no terminado en lugar del final. Saludos. |
#6
|
||||
|
||||
Hola escafandra.
Fijate que en la línea en que obtengo la longitud de cadena hago uso de la función Pred. Dado el valor 3077, tanto la versión de C++ como la de Delphi 10.3 arrojan el resultado 5320. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 19-02-2020 a las 05:23:27. |
#7
|
||||
|
||||
Correcto.
Saludos. |
#8
|
||||
|
||||
Hola a todos,
Cita:
Gracias de nuevo a todos, ecfisa, escafandra, mamcx, en efecto, estoy esperando a ver qué me dicen sobre la necesidad de inicializar la variable "crc" con el valor "3077"... pues de otra forma no parece obtenerse el valor apropiado. Sea como sea, estoy seguro de que algo falla / falta en el código de ejemplo que me ofrecieron, es decir, vosotros no falláis, eso lo tengo claro: de modo que veremos a ver en qué queda todo esto. ¡En cuanto me digan algo lo publico aquí! |
#9
|
||||
|
||||
Hola a todos,
Por fin he conseguido más información sobre el tema que se trata aquí... y ahora estoy seguro de que es posible convertir el código a Delphi, vaya, de que vosotros sabréis hacerlo, puesto que yo, aunque lo he intentado... no he sido capaz... En efecto, el código de que se partía al principio no estaba completo, sino que faltaba información, según lo veo yo, principalmente, los tipos de las variables de entrada y de salida, o bien podía deducirse todo del siguiente código... que es el "programa" completo: Código:
using System; using System.Text; namespace QRCode { class Program { static void Main(string[] args) { byte[] b = Encoding.Default.GetBytes("13|0000123|1|Maximilian|Mustermann|05051999|21092019"); byte[] crc = CCITTx1D0F(b, b.Length); // Podemos ver una salida = 5320, que, es la esperada para la cadena de entrada Console.WriteLine( $"{crc[0]:X2}{crc[1]:X2}" ); Console.ReadLine(); } static private byte[] CCITTx1D0F(byte[] data, int len) { int i, x = 0; ushort crc = 0x1D0F; int count = len; while (--count >= 0) { ushort z = (ushort)(data[x++] << 8); crc = (ushort)(crc ^ z); i = 8; do { if ((crc & 0x8000) != 0) crc = (ushort)(crc << 1 ^ 0x1021); else crc = (ushort)(crc << 1); } while (--i > 0); } return BitConverter.GetBytes(crc); } } } Desde ya os agradezco vuestra ayuda a todos. |
#10
|
||||
|
||||
Hola a todos de nuevo,
Quería añadir... que, en este caso, es importante tener en cuenta que la versión de Delphi habrá de ser la Delphi 2007... por si hay que tenerlo en cuenta... |
#11
|
||||
|
||||
Hola a todos,
Aquí los intentos que llevo a cabo, usando tanto el código de escafandra como el de ecfisa, dando ambos el mismo resultado: 22586, pero, no el esperado: 5320, la madre que le parió.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda para Convertir Todo este código en Function | MaxiDucoli | Internet | 3 | 01-10-2017 22:29:07 |
Convertir cadena aleatoria en cadena de N caracteres | DANY | OOP | 3 | 12-03-2009 20:49:21 |
Problemas para validar entrada de datos en delphi 7 | Nelly | Varios | 1 | 27-03-2007 23:31:25 |
Tengo un lio con cierto código | David | OOP | 11 | 13-10-2006 20:07:34 |
Concatenar Cadena Larga dentro de codigo Delphi | JoanKa | Conexión con bases de datos | 6 | 04-03-2005 17:53:44 |
|