• Publicidad

Cómo convertir cadena a hexadecimal y ASCII

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cómo convertir cadena a hexadecimal y ASCII

Notapor rithchard » 2010-04-30 09:37 @442

Hola amigos del foro:

Quisiera saber alguna función para convertir de texto a hexadecimal y también de texto a ASCII:

En una variable tendría el texto y luego, ¿cómo lo haría?:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$texto="hola";
print $texto." en hex es ".$codificado; # 686f6c61
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


símbolo "a" = 97 de ASCII

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$texto="hola";
print $texto." en ascii es ".$codificado; # 104,111,108,97
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos
rithchard
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2010-04-19 11:59 @540

Publicidad

Re: Cómo convertir cadena a hexadecimal y ASCII

Notapor natxo » 2010-04-30 10:46 @490

Para convertir una cadena a ASCII puedes usar la función ord():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $string = "hola";
my @values = split //,$string;

for my $value (@values) {
    my $ascii = ord($value);
    print "$value\t$ascii\n";
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


nos da esto
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
h       104
o       111
l       108
a       97
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

ord() convierte sólo el primer carácter de la cadena a ASCII, así que hay que separar cada cadena en sus caracteres individuales. Esto lo podemos hacer con split() y guardamos los valores en el array @values. Luego, podemos procesar cada valor con ord().
saludos,
Natxo Asenjo
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Re: Cómo convertir cadena a hexadecimal y ASCII

Notapor explorer » 2010-04-30 15:17 @678

Aparte de la solución indicada por natxo, otra forma de hacerlo es usando las funciones pack() y unpack().

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use 5.010;
  3.  
  4. my $texto = 'hola';
  5.  
  6. say join q[,], unpack "C*", $texto; # 104,111,108,97
  7.  
  8. say join q[],  unpack "H*", $texto; # 686f6c61
  9.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No dejes de leer este hilo: Convertir texto ASCII a texto normal.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 34 invitados