Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > JAVA
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Unhappy Operaciones con bits

Buenas, Estoy traspasando un programa de Java a Delphi y me encuentro en un punto que no entiendo lo que hace. Alguien podría explicarmelo por favor ?

Las lineas en Java son las siguientes:

packet[i++] = (byte) (lenField >>> 7 & 0x7f | 0x80);
packet[i++] = (
byte) (lenField & 0x7f);
packet[i++] = (byte) (dataLen >>> 7 & 0x7f | 0x80);

packet[i++] = (
byte) (partPos >>> 8 & 0xff);
packet[i++] = (
byte) (partPos & 0xff);


el problema esta, evidentemente, en lo que hacen los operadores >>>, & y |

Espero vuestras noticias y gracias

Última edición por Casimiro Notevi fecha: 16-06-2010 a las 13:21:50.
Responder Con Cita
  #2  
Antiguo 16-06-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,

Código:
packet[i++] = (byte) (lenField >>> 7 & 0x7f | 0x80);
el operador ++ es de incremento,
el operador >>> es bitwise, o sea, desplazamiento del numero en bits hacia la izquierda, lo que es equivalente a dividir por dos al ser binario. El & es AND y el | es OR.

Responder Con Cita
  #3  
Antiguo 16-06-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 17
mcs Va por buen camino
Más o menos sería esto:
Código:
packet[i]=((lenField shr 7) And $7f) Or $80;
Inc(i);
packet[i]=lenfield And $7f;
Inc(i);
packet[i]=((dataLen shr 7) And $7f) Or $80;
Inc(i);

packet[i]=(partPos shr 8) And $ff;
Inc(i);
packet[i]=partPos And $ff;
Inc(i);
Por tanto:
<< equivale a shl, pero conservando el bit de signo
>> equivale a shr, pero conservando el bit de signo
>>> es un shr, pero para datos sin signo
& es un And
| es un Or
Responder Con Cita
  #4  
Antiguo 16-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Como hacer esto ?

Buenas de nuevo, hoy estoy de dudas. Resulta que estoy convirtiendo un codigo de JAVA a Delphi y me encuentro con una duda, no se cual es el equivalente en delphi de:

Código PHP:
packet[i++] = (byte) (lenField >>> 0x7f 0x80);
packet[i++] = (byte) (lenField 0x7f);
packet[i++] = (byte) (dataLen >>> 0x7f 0x80);
packet[i++] = (byte) (dataLen 0x7f);
packet[i++] = (byte) (partPos >>> 0xff);
packet[i++] = (byte) (partPos 0xff); 
Resulta que es un ARRAY de Bytes, eso no es lo complicado, pero si los operedores
Código PHP:
>>> & | 
no a que equivalen en Delphi.

No se si alguien podrá ayudarme con esto.

Gracias de todas maneras
Responder Con Cita
  #5  
Antiguo 16-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Gracias por la respuesta, esto ya habia podido leerlo en Internet, pero mi problema es que no se como convertirlo a Delphi, es decir, cual sería el codigo equivalente en Delphi de esto:

Código PHP:
lenField >>> 0x7f 0x80
lenField 
0x7f
dataLen 
>>> 0x7f 0x80
partPos 
>>> 0xff
partPos 
0xff 
Teniendo en cuenta que lenField, dataLen y partPos son variables del tipo INTEGER

Gracias de nuevo
Responder Con Cita
  #6  
Antiguo 16-06-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 17
mcs Va por buen camino
Ya te hemos respondido en el apartado Java, por lo tanto no dupliques los posts. Y no estaría mal que pusieras un título claro en el post...
Responder Con Cita
  #7  
Antiguo 16-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
MCS, ya se que me habeis respondido, pero a una pregunta diferente. En este caso es como convertir ese codigo a Delphi y por eso lo he puesto aqui y no en el apartado de JAVA

Gracias
Responder Con Cita
  #8  
Antiguo 16-06-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 17
mcs Va por buen camino
Cita:
Empezado por JordiP Ver Mensaje
MCS, ya se que me habeis respondido, pero a una pregunta diferente. En este caso es como convertir ese codigo a Delphi y por eso lo he puesto aqui y no en el apartado de JAVA

Gracias
A una pregunta diferente?! Espero que no te refieras a esta: http://www.clubdelphi.com/foros/showthread.php?t=68481. Porqué entonces no veo donde está la diferencia.

De todas formas, podrías leerte un poco más detalladamente el hilo anterior (son 3 respuestas en total), y quizá así podrás ver que este bloque de código lo tienes convertido de Java a Delphi...
Responder Con Cita
  #9  
Antiguo 16-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Thumbs up Solucionado

MCS, perdona, ya veo que me dabas una respuesta del equivalente en Delphi, perdona pero no llevo un buen día.

Ya estoy trabajando con la ayuda que me has dado.

Gracias.
Responder Con Cita
  #10  
Antiguo 16-06-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 17
mcs Va por buen camino
Cita:
Empezado por JordiP Ver Mensaje
MCS, perdona, ya veo que me dabas una respuesta del equivalente en Delphi, perdona pero no llevo un buen día.

Ya estoy trabajando con la ayuda que me has dado.

Gracias.
No pasa nada... A todos nos pasa a veces que nos saltamos "alguna línea" mientras leemos...

Saludos,

Marc
Responder Con Cita
  #11  
Antiguo 16-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Solucionado

MCS gracias y perdona por la confusion, si que era una respuesta, ya esta solucionado gracias a esa ayuda.

Un saludo
Responder Con Cita
  #12  
Antiguo 16-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, JordiP, no repitas preguntas en distintos subforos, y titula correctamente, porque "como hacer esto" y "traducción please" no sirve para nadie que luego esté buscando algo sobre el tema, debes poner un título algo más descriptivo.
Por favor, lee nuestra guía de estilo.
Voy a unir ambos hilos en uno solo.
Muchas gracias por tu colaboración.
Responder Con Cita
  #13  
Antiguo 16-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
OK lo hare, perdonad
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Traduccion lmpadron C++ Builder 3 05-05-2010 15:30:31
Traducción de C a Delphi madiazg Varios 4 02-08-2008 15:00:24
Traduccion de Componente Neeruu Varios 4 05-03-2008 00:11:21
Traducción de tu programa. REHome .NET 4 11-04-2007 00:19:19


La franja horaria es GMT +2. Ahora son las 22:42:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi