Puede usar pack
para generar sus datos binarios. Para estructuras complejas, Convert::Binary::C es particularmente agradable.
CBC analiza los archivos de encabezado C (ya sea desde un directorio o desde una variable en su secuencia de comandos). Utiliza la información de los encabezados a pack
o unpack
datos binarios.
Por supuesto, si desea utilizar este módulo, es muy útil saber un poco de C.
CBC le da la posibilidad de especificar el orden de bits y tamaños para sus tipos C, e incluso se puede especificar funciones para convertir entre los tipos nativos de Perl y los datos en el archivo binario. Utilicé esta característica para manejar la codificación y decodificación de números de punto fijo.
Para su ejemplo muy básico que tendría que utilizar:
use strict;
use warnings;
use IO::File;
use Convert::Binary::C;
my $c = Convert::Binary::C->new('ByteOrder' => 'LittleEndian');
my $packed = $c->pack('short int', 0xFF);
print $packed;
my $fh = IO::File->new('outfile', '>')
or die "Unable to open outfile - $!\n";
$fh->binmode;
$fh->print($packed);
CBC en realidad no llegar a brillar en este ejemplo, ya que se acaba de trabajar con un único int corto.Si necesita manejar estructuras complejas que pueden tener typedefs extraídos de diferentes encabezados C, estará muy contento de tener esta herramienta a mano.
Como usted es nuevo en Perl, le sugiero que siempre use stict
y use warnings
. Además, puede use diagnostics
para obtener explicaciones más detalladas de los mensajes de error. Tanto este sitio como Perlmonks tienen mucha información buena para principiantes y muchas personas muy inteligentes y capacitadas dispuestas a ayudarlo.
Por cierto, si decides ir a la ruta pack
, echa un vistazo al pack tutorial, esto ayuda a aclarar la documentación algo desconcertante del paquete.
¿Qué le pasa a la gente que alguien votó esta pregunta? –
Creo que mi gramática no es tan buena y no está bien estructurada. – domlao
+1 para compensar -1, eso y es Perl. Sentirse subjetivo : D –