Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

bin2ascii and ascii2bin conversion

( #49927=categorized question: print w/ replies, xml ) Need Help??
Contributed by Anonymous Monk on Jan 05, 2001 at 04:22 UTC
Q&A  > input and output


Description:

Does anyone know 1) how to read a binary file then convert it to ascii? 2) how to read an ascii file then convert it to binary?

Answer: bin2ascii and ascii2bin conversion
contributed by Fastolfe

That depends totally on how you are defining "ascii". Even binary files can be considered ASCII because each byte corresponds to an ASCII value without any conversions at all. FTP defines the difference by interpreting OS-dependent newline sequences with "ASCII" files and not with "binary" files.

If you're trying to encode 8-bit data into printable text, you probably want MIME::Base64 or MIME::QuotedPrint. Otherwise you're going to need to be much more specific about the nature of your conversion.

Answer: bin2ascii and ascii2bin conversion
contributed by extremely

I gotta tell you that if you aren't talking about MIME-like encodings, you are going to want to look at pack and unpack. Also you will want to read up on binmode if you don't want perl messing with your data during reads and writes under some operating systems.

Answer: bin2ascii and ascii2bin conversion
contributed by Anonymous Monk

aW50b3RvZG5zIDY3NDg5ZTUzNzE5OTI3ZDJiYmE1NGFhMDc3ZTkyNDIw

Answer: bin2ascii and ascii2bin conversion
contributed by Anonymous Monk

Here is a script I wrote to convert binary files to C/C++ include files. It uses ord to convert from binary to a hex string.

#!/usr/bin/perl -w $source = $ARGV[0]; $dest = $ARGV[1]; unless($source and $dest) { print "Usage: perl bin2hex sourcefile destfile\n"; exit 0; } $/=\1; open SRC, "$source"; open DST, ">$dest"; if (defined(SRC) and defined(DST)) { print DST "unsigned char data[] = {\n "; $n=0; while (<SRC>) { if ($n==8) {$n=0; print DST "\n ";} $toprint = ord $_; if ($toprint < 16) {printf DST "0x0%x, ",$toprint;} else {printf DST "0x%x, ",$toprint;} $n++; } print DST "\n}"; close SRC; close DST; }
Hope it helps. Chilliwilli.

Please (register and) log in if you wish to add an answer



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • Outside of code tags, you may need to use entities for some characters:
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others chilling in the Monastery: (6)
    As of 2014-12-19 04:56 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      Is guessing a good strategy for surviving in the IT business?





      Results (70 votes), past polls