[caracas-pm] printf Hex

Luis E. Muñoz lem at itverx.com.ve
Sun Jan 31 10:09:50 PST 2010


On Sun, 2010-01-31 at 13:23 -0430, holzem at cantv.net wrote:
> si tengo esto: $excl = "\xed";
> 
> Que es? Un valor hex o un string?

Es un string que contiene un caracter, que escribiste en hexadecimal
(0xED).

> No logro imprimirlo usando printf.

Sí, lo estás imprimiendo, sólo que el resultado no es visible. Mira
esto:

lem at lemtop:~$ perl -e 'print "\xed"'
lem at lemtop:~$ perl -e 'print "\xed"' | wc -c
1
lem at lemtop:~$ perl -e 'print "\xed"' | od -h
0000000 00ed
0000001

El primer comando "no muestra nada".

El segundo comando, usa el comando wc para contar la cantidad de
caracteres que le enviaron por su entrada estándar. Dice que recibió un
caracter...

El tercer comando, muestra en hexadecimal, cuál fue la entrada, que
correspone con el caracter ed que acabamos de enviar.


> Tengo que mandar este $excl atravez del puerto serial.
> 
> Lo hago asi:  print $handle $excl;           &nbs p; y funciona. 

Exacto.

> Ahora: como hago con una variable hex, que tiene el valor 0xed,
> usando printf para que me funciona igual?

Construyes la plantilla de printf usando %c, como en este ejemplo

lem at lemtop:~$ perl -e 'printf "%c", 0xed' | od -h
0000000 00ed
0000001
lem at lemtop:~$ perl -e 'printf "%c", 0xed' | wc -c
1

También puedes querer echarle un ojo a pack() y unpack() en caso de que
quieras armar secuencias más complejas.

Saludos

-lem



More information about the caracas-pm mailing list