将ASCII TEXT转换为二进制

时间:2017-12-18 23:02:18

标签: perl hex ascii

我必须将ASCII文件转换为二进制文件。 ASCII文件包含ASCII格式的十二位十六进制数字。对于123456789ABC的输入字符串,我需要输出0x12 \ 0x34 \ 0x56 \ 0x78 \ 0x9a \ 0xbc的六字节。这是有效的解决方案。谢谢你的帮助。

my $filename = 'Hub_Device_ID.txt';
my $outfile= 'Hub_Device_ID.bin';
open(my $fh, '<:encoding(UTF-8)', $filename)
         or die "Could not open file '$filename' $!";
open(my $of, '>:raw', $outfile)
         or die "Could not open file '$outfile' $!";
  binmode($of);

  while (my $row = <$fh>){

    chomp $row;
    print "Chomped row\n";
    print $row, "\n";


    my $bytes = pack 'H*', $row;
    print $bytes, "\n";
    print $of $bytes;


    close $of;
    close $fh;

    print "Done\n";

}

1 个答案:

答案 0 :(得分:-1)

我相信你想转换

my $hex = "0123456789aBcDeF";

my $bytes = "\x01\x23\x45\x67\x89\xAB\xCD\xEF";

为此,只需使用

即可
my $bytes = pack 'H*', $hex;