Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

bin2ascii and ascii2bin conversion

by Anonymous Monk
on Jan 05, 2001 at 04:22 UTC ( #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


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


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!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • 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
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            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?

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

    How do I use this? | Other CB clients
    Other Users?
    Others avoiding work at the Monastery: (5)
    As of 2020-09-22 07:12 GMT
    Find Nodes?
      Voting Booth?
      If at first I donít succeed, I Ö

      Results (128 votes). Check out past polls.