Foros del Web » Programando para Internet » PHP »

trabajar con unpack() y binarios

Estas en el tema de trabajar con unpack() y binarios en el foro de PHP en Foros del Web. Hola, puse otro tema mas con el problema especifico pero no he tenido respuesta, a ver si ahora hay mas suerte con el tema más ...
  #1 (permalink)  
Antiguo 09/08/2007, 06:43
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 22 años, 3 meses
Puntos: 0
trabajar con unpack() y binarios

Hola, puse otro tema mas con el problema especifico pero no he tenido respuesta, a ver si ahora hay mas suerte con el tema más amplio, se trata de leer un archivo binario del cual se como está compuesto pero no se usar unpack() correctamente.

yo recorro el archivo byte a byte de forma tradional y en ciertos bytes no pone nada y en otro un caracter correcto, es decir, cuando son letras normales sin problema pero cuando quiero obtener un numero concreto no aparece nada, entonces utilizo unpack ("S" , $variable), pero me sale el error:

unpack(): Type S: not enough input, need 2, have 1

el problema es q no se si tengo que usar 1, 2, 3 ... bytes juntos para que me de el numero que necesito

Segun el manual de php:

a cadena completada con caracteres NUL
A cadena completada con espacios
h cadena Hex, nibble bajo primero
H cadena Hex, nibble alto primero
c caracter con signo
C caracter sin signo
s short con signo (siempre de 16 bits, orden de bytes de máquina)
S short sin signo (siempre de 16 bits, orden de bytes de máquina)
n short sin signo (siempre de 16 bits, byte más significativo primero)
v short sin signo (siempre de 16 bits, byte menos significativo primero)
i entero con signo (tamaño y orden de bytes dependiente de la máquina)
I entero sin signo (tamaño y orden de bytes dependiente de la máquina)
l long con signo (siempre de 32 bits, orden de bytes de máquina)
L long sin signo (siempre de 32 bits, orden de bytes de máquina)
N long sin signo (siempre de 32 bits, byte más significativo primero)
V long sin signo (siempre de 32 bits, byte menos significativo primero)
f flotante (tamaño y representación dependiente de la máquina)
d doble (tamaño y representación dependiente de la máquina)
x byte NUL
X Copiar un byte
@ relleno de NUL hasta una posición absoluta



pero luego puedes ver en scripts q utilizan unpack() cosas como

unpack ("c2chars/nint", $variable);

o $a=unpack('Ni',$_r);
o $u=unpack("H2rev/H2b/nc/Nd/V*e", $osid);

se me escapa el "c2chars/nint"

Volviendo a lo que pone en el manual de php
s short con signo (siempre de 16 bits, orden de bytes de máquina)
S short sin signo (siempre de 16 bits, orden de bytes de máquina)
que eso de con singo o sin singo?
16 bits es que necesito coger 2 bytes para traducirlo correctamente?
32 bits tendría que coger 8 bytes?
orden de bytes de máquina?



Alguien q me pueda dar una pista?


Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:35.