Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: how to convert numbers to ASCII characters

by shmem (Chancellor)
on Jan 24, 2008 at 17:36 UTC ( [id://664094]=note: print w/replies, xml ) Need Help??


in reply to how to convert numbers to ASCII characters

See pack and unpack.
print FILE pack "C*", @numbers; # write @numbers = unpack "C*", <FILE>; # read

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

Replies are listed 'Best First'.
Re^2: how to convert numbers to ASCII characters
by ikegami (Patriarch) on Jan 24, 2008 at 17:54 UTC
    Binary files aren't likely to be LF-terminated, so <...> isn't likely to be appropriate.
    sub read_block { my ($fh, $bytes_to_read) = @_; my $buf = ''; while ($bytes_to_read) { my $bytes_read = read($fh, $buf, $bytes_to_read, length($buf)); die("Unable to read from file: $!\n") if !defined($bytes_read); die("Unable to read from file: Unexpected end of file\n") if !$bytes_read; $bytes_to_read -= $bytes_read; } return $buf; } # Write print $fh (pack('C', scalar(@numbers)); print $fh (pack('C*', @numbers)); # Read my $num_numbers = unpack('C', read_block($fh, 1)); my @numbers = unpack('C*', read_block($fh, $num_numbers));

    Update: Fixed incorrect variable name. Thanks blokhead.

      Binary files aren't likely to be LF-terminated, so <...> isn't likely to be appropriate.

      As always, that depends. It is likely to be appropriate if the file isn't too big and read in slurp mode.

      --shmem

      _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                    /\_¯/(q    /
      ----------------------------  \__(m.====·.(_("always off the crowd"))."·
      ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://664094]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (3)
As of 2025-07-18 07:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.