• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 7823
  • Last Modified:

How to convert a binary file into ASCII format?

I have a binary file and I want the same to convert into ASCII format with symbols,i,e in a readable format.Please tell me the steps to follow....

1) How can I read a binary file which contain all 0's and 1's .
0
tatikor_143
Asked:
tatikor_143
  • 2
1 Solution
 
imladrisCommented:
There are many ways this could be done. I suspect you have something specific in mind, or that you, at least, won't like some of the options. The first question is what do you want the output to look like. If you consider the following sequence of bytes in a file (shown in hexadecimal):

41 42 01 05 43 4F

This could be rendered in ASCII in a  number of ways.

1. Show the corresponding ASCII character:  A B (open face) (club) C O
    One drawback here is that lots of bytes don't correspond to well defined or printable characters.
    1 and 5 are often used as control codes.

2. Show the nibbles; that is, show each half byte (nibble) as a character from 0 to ?: 4 1 4 2 0 1 0 5 4 3 ?
    This ensures that everything is printable.

3. Show all the ones and zeroes:  01000001 01000010 00000001 00000101 01000011 01001111
    The drawback here is that the printout will be very long.

4. Show it in hex as above: 41 42 01 05 43 4F

To read a binary file under windows you open it in binary mode:

#include <stdio.h>
char buf[100];
FILE *fp;

fp=fopen("thefile","rb");
fread(buf,100,1,fp);

and you have the first 100 bytes in buf. Then you need to process them in some way to show them as you want to.
0
 
imladrisCommented:
To show those 100 bytes in hex you could do something simple like:

int i;

for(i=0; i<100; ++i)printf("%x ",buf[i]);
printf("\n");
0
 
Kent OlsenData Warehouse Architect / DBACommented:

Hi guys,

My guess is that the poster has a binary file such as a .exe, .jpg, .dbf, etc.  Formatting this is a snap.


You can pipe this into a program designed to format this or just open the file and read it.  Your choice.

To do the actual formatting, just use printf() or fprintf()


main ()  // read file from stdin
{
  char ch;
  int    bytes;

  bytes = 0;
  while (1)
  {
    ch = fgetc (stding)
    if (feof(stdin))
      break;

    fprintf (stdout, " %d> %2.2x %c\n", bytes, ch, ch < 0x80 && ch >= ' ' ? ch : ' ');
    ++bytes;
  }
}


This will print something like:

 0> 54 T
 1> 65 e
 2> 73 s
 3> 74 t
 4> 20


etc....

Good Luck,
Kent
0
 
grg99Commented:
What's in the file?   characters?    numbers?    bytes, words, longs?   signed or unsigned?

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now