CcodeTemplates
Alias_Compile/Run
Arguments_Printout
Convert_Aiff_File
Convert_BMP_File
Convert_GDSII_File
Final
File_IO
File_IO_double
File_IsAlpha_Or_Digit
File_Place_Get_Pointer
File_Place_Put_Pointer
File_Random_Access
File_Write_From_Keyboard
File_Write
File_Find_Replace
Function
Math_function.c

Simple
String_Append
Structures

==========Alias_Compile/Run========

donsauer\$  alias r = "gcc test1.c -o test1
./test1 "
donsauer\$ r
I'm a C program

==========Simple========
================Test1.c=====================
#include <stdio.h>
main () { printf ("I'm a C program\n"); }

================Test1_compile=====================
donsauer\$ cd /Users/donsauer/Documents/KEY/KEY0/IDEA2IC/PlayWithXcode/CLanguageExamples
donsauer\$ gcc test1.c -o test1
donsauer\$ ./test1
I'm a C program

==========Function========
================Test2.c=====================
#include <stdio.h>
int sum ( int x, int y );
main ()
{ int theSum = sum (10, 11);
printf ( "Sum: %i\n", theSum );
}
int sum ( int x, int y )
{ return x + y;
}
================Test2_compile=====================
donsauer\$  gcc test2.c -o test2
donsauer\$ ./test2
Sum: 21

==========Math_function.c========
================math_functions.h=====================
int   sum       (int x, int y);
float average   (float x, float y, float z);

================math_functions.c=====================
int sum (int x, int y)
{ return (x + y);
}
float average (float x, float y, float z)
{ return (x + y + z) / 3;
}
================test3.c===============================
#include <stdio.h>
#include "math_functions.h"

main ()
{ int   theSum     = sum (8, 12);
float theAverage = average (16.9, 7.86, 3.4);
printf ("the sum is: %i ", theSum);
printf ("and the average is: %f \n", theAverage);
printf ("average casted to an int is: %i \n", (int)theAverage);
}

================Test3_compile=====================
donsauer\$ gcc test3.c math_functions.c -o test3
donsauer\$ ./test3
the sum is: 20 and the average is: 9.386666
average casted to an int is: 9

==========Structures===========
================song.h=====================
typedef struct
{ int lengthInSeconds;
int yearRecorded;
} Song;

Song  make_song    (int seconds, int year);
void  display_song (Song theSong);
================song.c=====================
#include <stdio.h>
#include "song.h"

Song make_song (int seconds, int year)
{
Song newSong;
newSong.lengthInSeconds = seconds;
newSong.yearRecorded    = year;
display_song (newSong);
return newSong;
}

void display_song (
Song theSong)
{ printf ("the song is %i seconds long ", theSong.lengthInSeconds);
printf ("and was made in %i\n", theSong.yearRecorded);
}

================test4.c=====================
include <stdio.h>
#include "song.h"
main ()
{
Song firstSong  = make_song (210, 2004);

Song secondSong = make_song (256, 1992);

Song thirdSong  = { 223, 1997 };
display_song ( thirdSong );
Song fourthSong = { 199, 2003 };
}
================Test4_compile=====================
donsauer\$ gcc test4.c song.c -o test4
donsauer\$ ./test4
the song is 210 seconds long and was made in 2004
the song is 256 seconds long and was made in 1992
the song is 223 seconds long and was made in 1997

==========Final=================
================final.c=====================
#include <stdio.h>
#include "math_functions.h"
#include "song.h"
main ()
{ const int numberOfSongs = 3;
printf ("total number of songs will be: %i\n", numberOfSongs);
int i;
for (i = 0; i < numberOfSongs; i++)
{ printf ("loop trip %i ", i);
} printf ("\n");

Song song1  = make_song (223, 1998);

Song song2  = make_song (303, 2004);

Song song3  = { 315, 1992 };
display_song (song3);
int combinedLength = sum (song1.lengthInSeconds, song2.lengthInSeconds);
printf ("combined length of song1 and song2 is %i\n", combinedLength);
float x = (float) song1.lengthInSeconds;
float y = (float) song2.lengthInSeconds;
float z = (float) song3.lengthInSeconds;
float averageLength;
averageLength = average (x, y, z);
printf ("average length is: %f as a float ", averageLength);
printf ("and %i as an int\n", (int) averageLength);
}

================Final_compile=====================
donsauer\$ gcc final.c song.c math_functions.c -o final
donsauer\$ ./final
total number of songs will be: 3
loop trip 0 loop trip 1 loop trip 2
the song is 223 seconds long and was made in 1998
the song is 303 seconds long and was made in 2004
the song is 315 seconds long and was made in 1992
combined length of song1 and song2 is 526
average length is: 280.333344 as a float and 280 as an int

================test3.cpp=====================
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ ifstream in("hello.aiff", ios::in | ios::binary);
if(!in)
{ cout << "Cannot open input file.\n";
return 1;
} int num;
char   str[80];

str[4] = '\0';                            // null terminate str
cout << str << "\n " ;                    // print double and string

in.read((char *) &num, sizeof(int));  // reads from file into int as LEnd..not BEnd
cout << num << "\n " ;                   // print double and string
in.close();
return 0;
}
================test3_compile=====================
donsauer\$ g++ -v  -Wall test3.cpp -o test3
donsauer\$ ./test3
FORM
788007680

00004_04_bEnd_unsign____File-Size     =   784430    {000BF82E}
788007680 {000BF82E}=>{2EF80B00}

============File_IO==========
================test2.c=====================
#include <fstream>
#include <iostream>
using namespace std;
int main()
{ std::ofstream
ofile;
ofile.open("ex.txt", ios::out);                   //opens file as output
int x=1;

ofile<<x;

ofile.close();                                      //ex.txt is now "1"
std::ifstream ifile;

ifile.open("ex.txt",ios::in);                     //opens file as input
int a;

ifile>>a;                                            //a now equals 1
a=2;

ifile.close();

ofile.open("ex.txt", ios::out|ios::trunc);      //opens file as output  ex.txt empty due to ios::trunc

ofile<<x;                                            //write 1 to file..ex.txt is now "1"

ofile.close();

ofile.open("ex.txt", ios::out|ios::app);         //open file as output  and appends

ofile<<a;                                            //write 2 to file ..ex.txt is now "12"

ofile.close();

ofile.open("ex.txt", ios::in|ios::out|ios::ate); //open file as output

ofile<<x;                                            //write 1 to file..ex.txt is now "121"

ofile.close();
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$ ./test2

============File_IO_double==========
================test2.c=====================
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ ofstream out("test", ios::out | ios::binary);
if(!
out)
{ cout << "Cannot open output file.\n";
return 1;
} double nums[4] = {1.1, 2.2, 3.3, 4.4 };

out.write((char *) nums, sizeof(nums));           //writes as Lend

out.close();
ifstream in("
test", ios::in | ios::binary);
if(!
in)
{ cout << "Cannot open input file.\n";
return 1;
}
int i;
for(i = 0; i <4; i++)  cout <<
nums[ i ] << ' ';    // 1.1 2.2 3.3 4.4
cout << '\n';
cout <<

in.close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$ ./test2
1.1 2.2 3.3 4.4

===========File_IsAlpha_Or_Digit==========
================test2.c=====================

#include <iostream>
#include <fstream>
#include <cctype>
using namespace std;
int main()
{ char ch;
ofstream out("
test", ios::out | ios::binary);
if(!
out)
{ cout << "Cannot open output file.\n";
return 1;
} char str[80], *p;

out << 123 << "this is a test" << 23;

out << "Hello there!" << 99 << "sdf" << endl;

out.close();
ifstream in("
test", ios::in | ios::binary);
if(!
in)
{ cout << "Cannot open input file.\n";
return 1;
} do
{ p = str;
ch =
in.peek();
if(isdigit(ch)) {
while(
isdigit(*p=in.get()))
p++;

in.putback(*p);
*p = '\0';                          // null terminate the string
cout << "Integer: " << atoi(str);
} else if(isalpha(ch)) // read a string
{ while(
isalpha(*p=in.get())) p++;

in.putback(*p);                     // return char to stream
*p = '\0';                          // null terminate the string
cout << "String: " << str;
} else

in.get();                        // ignore
cout << '\n';
} while(!
in.eof());

in.close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$ ./test2

Integer: 123
String: this
String: is
String: a
String: test
Integer: 23
String: Hello
String: there
Integer: 99
String: sdf
================test=====================
123this is a test23Hello there!99sdf

===========File_Place_Get_Pointer==========
================test2.c=====================

##include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{ char ch;
if(argc!=3)
{ cout << "Usage: LOCATE <filename> <loc>\n";
return 1;
} ifstream in(argv[1], ios::in | ios::binary);
if(!
in)
{ cout << "Cannot open input file.\n";
return 1;
}
in.seekg(atoi(argv[2]), ios::beg);      //places “get” pointer at argv[2] relative from beginning
while(!
in.eof())
{
in.get(ch);
cout << ch;
}
in.close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$ ./test2 test

his is a test23Hello there!99sdf

================test=====================
123this is a test23Hello there!99sdf

===========File_Place_Put_Pointer==========
================test2.c=====================
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

int main(int argc, char *argv[])
{ if( argc != 4)
{ cout << "Usage: CHANGE <filename> <character> <char>\n"; //  ./test2 test t d
return 1;
} fstream out(argv[1], ios::in | ios::out | ios::binary);
if(!out)
{ cout << "Cannot open file.";
return 1;
} out.seekp(atoi(argv[ 2 ]), ios::beg);    //positions at val of argv[2] relative to begininng
out.put(*argv[ 3 ]);
out.close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$ ./test2 test 5 d

================test=====================
123thds is a test23Hello there!99sdf

===========File_Random_Access==========
================test2.c=====================
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{ if(argc != 3)
{ cout << "Usage: CHANGE <filename> <byte>\n";  //   ./test2 test 7
return 1;
} fstream out(argv[1], ios::in | ios::out | ios::binary);
if(!out) {
cout << "Cannot open file.\n";
return 1;
} out.seekp(
atoi(argv[2]), ios::beg);     //sets put pointer argv[2] relative to beginning:
out.
put('X');
out.
close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$ ./test2 test 7

================test=====================
123thdsXis a test23Hello there!99sdf

===========File_Write_From_Keyboard==========
================test2.c=====================
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{ char ch;
if(argc!=2)
{ cout << "Usage: WRITE <filename>\n";
return 1;
} ofstream out(argv[1], ios::out | ios::binary);
if(!out)
{ cout << "Cannot open file.\n";
return 1;
} cout << "Enter a \$ to stop\n";
do
{ cout << ": ";
cin.
get(ch);                      // gets ch from cin (keyboard)

out.put(ch);                      // puts ch into out
} while (ch!='\$');
out.
close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$  ./test2 tt.txt
Enter a \$ to stop
: This is a Test \$
: : : : : : : : : : : : : : :

================tt=====================
This is a Test \$

===========File_Write==========
================test2.c=====================
#include <fstream>
using namespace std;
int main ()
{ long pos;
ofstream outfile;
outfile.open ("test.txt");
outfile.write ("This is an apple",16); // This is an apple , 16 char
pos=outfile.tellp();                   // get position of put pointer
outfile.seekp (pos-7);                 // set position of put pointer
outfile.
write (" sam",4);              // This is a sample
outfile.
close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$  ./test2

================test.txt=====================
This is a sample

================write2file.c=====================
#include <fstream>
#include <iostream>
using namespace std;
int main()
{ std::ofstream ofile;
ofile.open("ex.txt", ios::out);  //opens file as output
int x=1;
ofile<<x;
ofile.close();                  //ex.txt is now "1"
}

/*
donsauer\$ g++ -v write2file.c -o write2file
donsauer\$ ./write2file
*/

===========File_Find_Replace==========
================test2.c=====================
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{ if(argc!=3)
{ cout << "Usage: CONVERT <input> <output>\n";
return 1;
} ifstream fin(argv[1]);   // open input file
ofstream fout(argv[2]);  // create output file
if(!fout)
{ cout << "Cannot open output file.\n";
return 1;
} if(!
fin)
{ cout << "Cannot open input file.\n";
return 1;
} char ch;

fin.unsetf(ios::skipws);          // do not skip spaces
while(!
fin.eof())
{
fin >> ch;
if(ch==' ') ch = '|';
if(!
fin.eof()) fout << ch;
}
fin.close();
fout.
close();
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$  ./test2 test.txt test2.txt

================test2.txt=====================
This|is|a|Test|\$

================test2.c=====================
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ char str[80];
cout << "Enter your name: ";
cin.getline(
str, 79);          // reads one line at a time
cout <<
str << '\n';
return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$  ./test2
don sauer

================test2_alternative=====================
#include <iostream>
using namespace std;
int main()
{
int number;
cout << "Please enter an integer: ";
cin >> number;
cout << uppercase
<< " octal  \t decimal  \t hexadecimal\n "
<< oct << number << "       \t "
<< dec << number << "       \t "
<< hex << number << endl;
return 0;
}

/*
donsauer\$ g++ -v test2.c -o test2
donsauer\$ ./test2

alias r ='g++ -v test2.c -o test2
./test2'

don-sauers-macbook-pro:~ donsauer\$ ./test2
42            34            22
*/

================test2.c=====================
#include <stdio.h>
#include <string.h>

main(int argc, char *argv[])
{ int inp;
if (argc !=2 )
{ printf("usage: a.out number \n"); // ./test2 1
//exist(0);
}
inp = atoi(argv[1]);
printf("%s\n",argv[1]);     // 1
printf("%d\n",inp);         // 1
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$  ./test2 1
1
1

================test2.c=====================
include <stdio.h>
#include <string.h>

main(int argc, char *argv[])
{ float inp;
int   inp2;
if (argc !=2 )
{ printf("usage: a.out number \n");   //   ./test2 1.0
//exist(0);
}
inp = atof(argv[1]);
inp2 = atoi(argv[1]);
printf("%s\n",argv[1]);    // 1.0
printf("%f\n",inp);        // -1073744384.000000
printf("%d\n",inp2);       // 1
inp = (float) inp2;
printf("%f\n",inp);        // 1.000000
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$  ./test2 1.0
1.0
-1073744384.000000
1
1.000000

================test2.c=====================
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ int i;                                    //   ./test2 -a -b -d name
for (i = 1; i < argc; i++)
{ if (argv[i][0] == '-')                  //Look for -a or -d in command line
if (argv[i][1] == 'a')                 puts ("Found -a");  // Found -a
else if (argv[i][1] == 'd')
puts ("Found -d");  // Found -d
else printf (                         "Unknown switch %s\n", argv[i]); // Unknown switch -b
else if (strcmp(argv[i], "name") == 0)
puts ("Found name"); // Found name
}
return(0);
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer ./test2 -a -b -d name
Found -a
Unknown switch -b
Found -d
Found name

===========Arguments_Printout==========
================test2.c=====================
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{ while(argc--)
printf("%s\n", *argv++);
exit(EXIT_SUCCESS);
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer\$  ./test2 abcde text hello
./test2
abcde
text
hello

% prog 6 -why file.c                                     //then the value of argc is 4 (four)
argv
---         ---        -------------------
|  -|---->  |  -|----> | p | r | o | g |\0 |            //argv[0] is pointer to  string "prog". the cc prog
---        |---|       -------------------
|  -|----> | 6 |\0 |                        //argv[1] is the (pointer to the) string "6".
|---|       -------------------
|  -|----> | - | w | h | y |\0 |            //argv[2] is the (pointer to the) string "-why".
|---|       ---------------------------
|  -|----> | f | i | l | e | . | c |\0 |    //argv[3] is the (pointer to the) string "file.c".
|---|       ---------------------------

character '\0' is a standard way (in C code) to denote the NULL character.

===========String_Append==========
================test2.c=====================
#include <iostream>
using std::cout;
using std::endl;

#include <string>
using std::string;

int main()
{  string string1( "cat" );
string string3;
string3.assign( string1 );                    //string1: cat
cout << "string1: " << string1
<< "\nstring3: " << string3 << "\n\n";   //string3: cat
string3 += "pet";
string3.append( string1, 1, string1.length() - 1 );
cout << "string1: "   << string1
<< "\nstring3: " << string3 << "\n\n";  //string1: cat string3: catpetat

return 0;
}

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer ./test2

string1: cat
string3: cat
string1: cat string3: catpetat

================test2.c=====================
int main() {
int  a[30][10];             // declares an int array of 30 rows and 10 columns.
char ticTacToe[3][3];       //
declares  three rows and three columns of chars.
char ticTacToeBoard[3][3] = {{'x', 'x', 'o'},
{'o', 'o', 'x'},
{'x', 'o', ' '}
};
int i,j;
for (int j=0; j<3; j++)
{ for (int i=0; i<3; i++)
{ cout << ticTacToeBoard[j][i] << "  ";
}
cout << " \n";
}
return 0;
}//end main

================test2_compile=====================
donsauer\$ g++ -v test2.c -o test2
donsauer ./test2
x  x  o
o  o  x
x  o

============Convert_AIFF_2_Text========

============aiff2txt.c=====================
#include                <iostream>
#include                <fstream>
#include                <math.h>
using namespace         std;
ifstream::pos_type      getPointer;
const char             *fname;
char                    str[60];

int                     Int_Sign4( int first, int second, int third, int forth  ) ;
int                     Int_USign4( int first, int second, int third, int forth  );
int                     Int_USign2( int first, int second );
int                     Int_Sign2( int first, int second );
double                  Extend_10(int X0,int X1,int X2,int X3,int X4,int X5,int X6,int X7,int X8,int X9 );

int                     main (int argc, char * const argv[])
{ int                   val , i , filesize ,numbframes, NumbChan ;
double                extendVal, sampleRate, time ;
std::ofstream ofile;
if                   (argc !=2 )
{ printf(              "usage  ./aiff2txt  file2convert.aiff \n");
exit(0);
}
ofile.open(          "converted_aiff.txt",ios::out);
int x=33;

fname =               argv[1];
cout                  <<" "<< fname << "  " ;
ofile                 <<"filename = "<< fname << "  \n" ;

ifstream              file (fname, ios::in|ios::binary|ios::ate);
if                    (file.is_open())
{ getPointer =          file.tellg();
cout                  << "       file size is " << getPointer << " \n";
ofile                 << "file size = " << getPointer << " \n";
filesize =            getPointer;
file.seekg (          0, ios::beg);         // repositions get pointer to beginning
}

cout                  << "ADDR  TYPE          VALUE   \n";
ofile                 << "ADDR  TYPE          VALUE   \n";
getPointer =          file.tellg();
cout                  <<  getPointer << "     IFF_HEADER  ";
ofile                 <<  getPointer << "     IFF_HEADER  ";
4);     str[4]= '\0';          // strings end with \0
cout                  <<"  " << str << " \n" ;
ofile                 <<"  " << str << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "     FILE_SIZE   ";
ofile                 <<  getPointer << "     FILE_SIZE   ";

val =                 Int_USign4( str[0], str[1], str[2], str[3]  );
cout                  <<"  " << val << " \n" ;
ofile                 <<"  " << val << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "     TYPE_AIFF   ";
ofile                 <<  getPointer << "     TYPE_AIFF   ";

cout                  <<"  " << str << " \n" ;
ofile                 <<"  " << str << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    COMMON_CHUNK";
ofile                 <<  getPointer << "    COMMON_CHUNK";

cout                  <<"  " << str << " \n" ;
ofile                 <<"  " << str << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    CHUNK_SIZE  ";
ofile                 <<  getPointer << "    CHUNK_SIZE  ";

val =                 Int_USign4( str[0], str[1], str[2], str[3]  );
cout                  <<"  " << val << " \n" ;
ofile                 <<"  " << val << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    NUMB_CHAN   ";
ofile                 <<  getPointer << "    NUMB_CHAN   ";

val =                 Int_USign2( str[0], str[1] );
cout                  <<"  " << val << " \n" ;
ofile                 <<"  " << val << " \n" ;

NumbChan  =            val;

getPointer =          file.tellg();
cout                  <<  getPointer << "    NUMB_FRAM   ";
ofile                 <<  getPointer << "    NUMB_FRAM   ";

val =                 Int_USign4( str[0], str[1], str[2], str[3]);
numbframes =          val;
cout                  <<"  " << val << " \n" ;
ofile                 <<"  " << val << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    SAMP_SIZE   ";
ofile                 <<  getPointer << "    SAMP_SIZE   ";

val =                 Int_USign2( str[0], str[1] );
cout                  <<"  " << val << " \n" ;
ofile                  <<"  " << val << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    SAMP_RATE   ";
ofile                 <<  getPointer << "    SAMP_RATE   ";

extendVal =           Extend_10(str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9] );
cout                  <<"  " << extendVal << " \n" ;
ofile                 <<"  " << extendVal << " \n" ;

sampleRate =          extendVal;

getPointer =          file.tellg();
cout                  <<  getPointer << "     SSND_CHUNK  ";
ofile                  <<  getPointer << "    SSND_CHUNK  ";

cout                  <<"  " << str << " \n" ;
ofile                  <<"  " << str << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    CHUNK_SIZE  ";
ofile                 <<  getPointer << "    CHUNK_SIZE  ";

val =                 Int_USign4( str[0], str[1], str[2], str[3]);
cout                  <<"  " << val << " \n" ;
ofile                 <<"  " << val << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    OFFSET      ";
ofile                 <<  getPointer << "    OFFSET      ";

val =                 Int_USign4( str[0], str[1], str[2], str[3]);
cout                  <<"  " << val << " \n" ;
ofile                 <<"  " << val << " \n" ;

getPointer =          file.tellg();
cout                  <<  getPointer << "    BLOCK_SIZE  ";
ofile                 <<  getPointer << "    BLOCK_SIZE  ";

val =                 Int_USign4( str[0], str[1], str[2], str[3]);
cout                  <<"  " << val << " \n" ;
ofile                 <<"  " << val << " \n" ;

for                  (i=0; i< numbframes -4  ; i++)
{ getPointer =          file.tellg();

val =                 Int_Sign2( str[0], str[1] );
time =               (double) i/ sampleRate;
ofile                << time <<"  " << val  ;

if                   ( NumbChan > 1 )
{
val =                Int_Sign2( str[0], str[1] );
ofile                <<"  " << val  ;
} ofile                << " \n" ;
}
ofile.close();
cout                 <<"Output is stored in <converted_aiff.txt>  \n" ;
return 0;
}

double                Extend_10(int X0,int X1,int X2,int X3,int X4,int X5,int X6,int X7,int X8,int X9 )
{ if                  ( X0 <0 ) X0 =  X0+256;
if                  ( X1 <0 ) X1 =  X1+256;
if                  ( X2 <0 ) X2 =  X2+256;
if                  ( X3 <0 ) X3 =  X3+256;
if                  ( X4 <0 ) X4 =  X4+256;
if                  ( X5 <0 ) X5 =  X5+256;
if                  ( X6 <0 ) X6 =  X6+256;
if                  ( X7 <0 ) X7 =  X7+256;
if                  ( X8 <0 ) X8 =  X8+256;
if                  ( X9 <0 ) X9 =  X9+256;
int                 exp , i ,bit,testbit, scalebit;
exp                 = (X0 & 127);         // mask = 01111111
exp =               0;                    //cout << "  exp "<< exp <<" <<   \n" ;
for                 (i=1; i< 8  ; i++)
{ bit =               (int) pow(2,15-i);
exp =               exp + (X0 & bit);
}
for                 (i=0; i< 8  ; i++)
{ bit =               (int) pow(2,7-i);
exp =               exp + (X1 & bit);
} exp                 = exp +1;  // add offset
double              matval,matvalb , value;
matval =            0;
for                 (i=0; i< 8  ; i++)
{ bit =               pow(2,7-i);
scalebit =          pow(2,i+3);
testbit =           (X2 & bit);
matvalb =           (double) 8*(X2 & bit)/(bit*scalebit);
matval  =           matval + matvalb;
matvalb =           (double) 8*(X3 & bit)/(256*bit*scalebit);
matval  =           matval + matvalb;
matvalb =           (double) 8*(X4 & bit)/(256*256*bit*scalebit);
matval  =           matval + matvalb;
} value =             matval*pow(2,exp);
return value;
}

int                   Int_Sign2( int first, int second )
{ int                 numb ;
if                  ( second <0 ) second =  second+256;
numb  =             256*first + second;
return numb;
}

int                   Int_USign2( int first, int second )
{ int                 numb ;
if                  ( first  <0 ) first  =  first+256;
if                  ( second <0 ) second =  second+256;
numb  =             256*first + second;
return numb;
}

int                   Int_USign4( int first, int second, int third, int forth  )
{ int                 numb ;
if                  ( first  <0 ) first  =  first+256;
if                  ( second <0 ) second =  second+256;
if                  ( third  <0 ) third  =  third +256;
if                  ( forth  <0 ) forth  =  forth +256;
numb  =             256*(256*(256*first + second)+third )+forth;
return numb;
}

int                   Int_Sign4( int first, int second, int third, int forth  )
{ int                 numb ;
if                  ( second <0 ) second =  second+256;
if                  ( third  <0 ) third  =  third +256;
if                  ( forth  <0 ) forth  =  forth +256;
numb  =             256*(256*(256*first + second)+third )+forth;
// cout << " " << first << " " << second<< " " << third<< " " << forth << " \n";
return numb;
}

==========aiff2txt.c_compile/RUN================
donsauer\$ g++ -v aiff2txt.c -o aiff2txt
donsauer\$ ./aiff2txt   0.1uf.aiff

0.1uf.aiff          file size is 910
4     FILE_SIZE     902
8     TYPE_AIFF     AIFF
12    COMMON_CHUNK  COMM
16    CHUNK_SIZE    18
20    NUMB_CHAN     2
22    NUMB_FRAM     214
26    SAMP_SIZE     16
28    SAMP_RATE     96000
38    SSND_CHUNK    SSND
42    CHUNK_SIZE    864
46    OFFSET        0
50    BLOCK_SIZE    0
Output is stored in <converted_aiff.txt>

===========converted_aiff.txt===================

filename = 0.1uf.aiff
file size = 910
4     FILE_SIZE     902
8     TYPE_AIFF     AIFF
12    COMMON_CHUNK  COMM
16    CHUNK_SIZE    18
20    NUMB_CHAN     2
22    NUMB_FRAM     214
26    SAMP_SIZE     16
28    SAMP_RATE     96000
38    SSND_CHUNK    SSND
42    CHUNK_SIZE    864
46    OFFSET        0
50    BLOCK_SIZE    0
0  -7348  372
1.04167e-05  -7263  303
2.08333e-05  -7196  247
3.125e-05  -7218  187
4.16667e-05  -7271  117
5.20833e-05  -7274  41
6.25e-05  -7230  -32
7.29167e-05  -7189  -98
8.33333e-05  -7194  -163
9.375e-05  -7215  -229
0.000104167  -7224  -296
0.000114583  -7201  -357
0.000125  -7174  -415
0.000135417  -7169  -475
0.000145833  -7187  -544
0.00015625  -7205  -616
0.000166667  -7193  -683
0.000177083  -7160  -736
0.0001875  -7149  -777
0.000197917  -7171  -819
etc....

============Convert_GDSII============

==================GDS2_BIN2TXT_main.cpp=============================

#include                <iostream>
#include                <fstream>
#include                <math.h>
using namespace         std;
ifstream::pos_type      getPointer;
char                  * memblock;
unsigned                Int_2u(    unsigned  hi, unsigned  lo );
int                     Numb_Bytes(int  hi, int lo  );
int                     Int_Sign4( int first, int second, int third, int forth  ) ;
double                  Real_8(    int X0, int X1, int X2, int X3,int X4, int X5, int X6, int X7 );
string                  CodeID(    int hi, int lo  );
char                    str2[60];
const char             *fname;

int                     main (int argc, char * const argv[])
{ fname =              "TEST.SF";                                //Rename files nmae
.
cout                  <<""<< fname << " is the file being read \n" ;
ifstream              file (fname, ios::in|ios::binary|ios::ate);
if                    (file.is_open())
{ getPointer =          file.tellg();                             //Get position of the get pointer
memblock =            new char [getPointer];
file.seekg (          0, ios::beg);           // repositions get pointer to beginning
getPointer =          file.tellg();            //find new  position of the get pointer

string                 ID_str, refl_str;
int                    numb, val , j , numbData;
double                 realVal;

do
{ file.read(str2,2);    numb   = Numb_Bytes( str2[0], str2[1] );  //first read numb bytes in block
2);    ID_str = CodeID(     str2[0], str2[1] ); //read block ID
numb =                numb - 4;                                 //rest of bytes to read

if                    ( ID_str == "HEADER         Release # ")
{ val =                 Int_2u( str2[0] , str2[1] );              //2_data_bytes=version
cout                  <<" " << ID_str << val << "  \n" ;
} if                    ( ID_str == "BGNLIB")
{ cout                  <<" " << ID_str << "       " ;            //data_bytes=dates
} if                    ( ID_str == "LIBNAME = ")
{ str2[numb]='\0';      // null terminate str                    //data_bytes=string
cout                  <<"  " << ID_str << str2 << "  " ;
} if                    ( ID_str == "FONTS = ")
{ str2[numb]='\0';      // null terminate str                    //data_bytes=string
cout                  <<" " << ID_str << str2 << "  \n" ;
} if                    ( ID_str == "GENERATIONS")
{ val =                 Int_2u( str2[0] , str2[1] );             //2_data_bytes=generation
cout                  <<" " << ID_str <<" "<< val << " " ;
} if                    ( ID_str == "BGNSTR")                    //data_bytes=dates
{ cout                  <<" " << ID_str << "        " ;
} if                    ( ID_str == "STRNAME = ")
{ str2[numb]='\0';      // null terminate str                    //data_bytes=string
cout                  <<" " << ID_str << str2 << "  \n" ;
} if                    ( ID_str == "BOUNDARY")                  //no data_bytes
{ cout                  <<" " << ID_str << "      ";
} if                    ( ID_str == "LAYER   = ")
{ val =                 Int_2u( str2[0] , str2[1] );             //2_data_bytes=layer
cout                  <<" " << ID_str << val << "  " ;
} if                    ( ID_str == "DATATYPE = ")
{ val =                 Int_2u( str2[0] , str2[1] );             //2_data_bytes=datatype
cout                  <<" " << ID_str << val << "  \n" ;
} if                    ( ID_str == "ENDEL")                     //no data_bytes
{ cout                  <<"" << ID_str << "  \n" ;
} if                    ( ID_str == "ENDSTR")                    //no data_bytes
{ cout                  <<" " << ID_str << "  \n" ;
} if                    ( ID_str == "ENDLIB")                    //no data_bytes
{ cout                  <<" " << ID_str << "  \n" ;
} if                    ( ID_str == "SREF")                      //no data_bytes
{ cout                  <<" " << ID_str << "         " ;
} if                    ( ID_str == "SNAME")
{ str2[numb]='\0';      // null terminate str                    //data_bytes=string
cout                  <<"  " << ID_str<<"  " << str2 << "  " ;
} if                    ( ID_str == "STRANS")
{ refl_str  =           "none";
val =                 Int_2u( str2[0] , str2[1] );             //2_data_bytes=relect
if                    ( val != 0) refl_str  = "reflect";
cout                  <<" " << ID_str <<" "<< refl_str << " " ;
} if                    ( ID_str == "XY = ")
{ numbData =            numb/4;
cout                   <<" " << ID_str <<"         " ;          //data_bytes(int_4) =positions
for                   (j= 0;    j< numbData; j=j+1)
{ val =                 Int_Sign4( str2[0+4*j], str2[1+4*j], str2[2+4*j], str2[3+4*j]  );
cout                  <<" " << val << "" ;
} cout                  <<"\n " ;
} if                    ( ID_str == "UNITS   = ")                //data_bytes(real_8) =scale
{ realVal =             Real_8(str2[0],str2[1],str2[2],str2[3],str2[4],str2[5],str2[6],str2[7] );
cout                  <<" " << ID_str <<"" << realVal << "  " ;
realVal =             Real_8(str2[8],str2[9],str2[10],str2[11],str2[12],str2[13],str2[14],str2[15] );
cout                  << realVal << "  \n" ;
} if                    ( ID_str == "TEXT")
{ cout                  <<" " << ID_str << "          " ;        //no data_bytes
} if                    ( ID_str == "TEXTTYPE")
{ val =                 Int_2u( str2[0] , str2[1] );             //2_data_bytes=texttype
cout                  <<" " << ID_str <<" " << val << "  " ;
} if                    ( ID_str == "PRESENTATION")
{ val =                 Int_2u( str2[0] , str2[1] );             //2_data_bytes=presentation
cout                  <<" " << ID_str <<" " << val << "  " ;
} if                    ( ID_str == "MAG")                       //data_bytes(real_8) =magnitude
{ realVal =             Real_8(str2[0],str2[1],str2[2],str2[3],str2[4],str2[5],str2[6],str2[7] );
cout                  <<" " << ID_str <<" " << realVal << "\n" ;
}  if                   ( ID_str == "ANGLE")                     //data_bytes(real_8) =angle
{ realVal =             Real_8(str2[0],str2[1],str2[2],str2[3],str2[4],str2[5],str2[6],str2[7] );
cout                  <<" " << ID_str <<" " << realVal << "  " ;
} if                    ( ID_str == "STRING")
{ str2[numb]='\0';      // null terminate str                    //data_bytes=string
cout                  <<"" << ID_str<<"         " << str2 << "  \n " ;
} if                    ( ID_str == "PATHTYPE")
{ val =                 Int_2u( str2[0] , str2[1] );             //2_data_bytes=pathtype
cout                  <<" " << ID_str <<" " << val << "    " ;
} if                    ( ID_str == "WIDTH")                     //data_bytes(int_4) =width
{ val =                 Int_Sign4( str2[0], str2[1], str2[2], str2[3]  );
cout                  <<" " << ID_str <<"     " << val << "  \n" ;
} if                    ( ID_str == "PATH")                     //no data_bytes
{ cout                  <<" " << ID_str << "          " ;
}

} while               ( !file.eof());                       /* do readfile until eof   */
file.close();

} else cout             << "Unable to open "<< fname << " \n"; //std::cout << "Hello, World!\n";
return 0;
}

string                  CodeID( int hi, int lo  )
{ string                str = "" ;
if                    ( hi == 00 && lo == 02 )   str = "HEADER release # ";
if                    ( hi == 00 && lo == 02 )   str = "HEADER         Release # ";
if                    ( hi == 01 && lo == 02 )   str = "BGNLIB";          // 0101
if                    ( hi == 02 && lo == 06 )   str = "LIBNAME = ";      // 0206
if                    ( hi == 32 && lo == 06 )   str = "FONTS = ";        // 2006
if                    ( hi == 34 && lo == 02 )   str = "GENERATIONS";     // 2202
if                    ( hi == 03 && lo == 05 )   str = "UNITS   = ";      // 0305
if                    ( hi == 05 && lo == 02 )   str = "BGNSTR";          // 0502
if                    ( hi == 06 && lo == 06 )   str = "STRNAME = ";      // 0606
if                    ( hi == 8  && lo == 00 )   str = "BOUNDARY";        // 0800
if                    ( hi == 13 && lo == 02 )   str = "LAYER   = ";      // 0d02
if                    ( hi == 14 && lo == 02 )   str = "DATATYPE = ";     // 0e02
if                    ( hi == 16 && lo == 03 )   str = "XY = ";           // 1003
if                    ( hi == 17 && lo ==  0 )   str = "ENDEL";           // 1100
if                    ( hi ==  7 && lo ==  0 )   str = "ENDSTR";          // 0700
if                    ( hi ==  4 && lo ==  0 )   str = "ENDLIB";          // 0400
if                    ( hi == 10 && lo ==  0 )   str = "SREF";            // 0a00
if                    ( hi == 18 && lo ==  6 )   str = "SNAME";           // 1206
if                    ( hi == 26 && lo ==  1 )   str = "STRANS";          // 1a01
if                    ( hi == 12 && lo ==  0 )   str = "TEXT";            // 0c00
if                    ( hi == 22 && lo ==  2 )   str = "TEXTTYPE";        // 1602
if                    ( hi == 23 && lo ==  1 )   str = "PRESENTATION";    // 1701
if                    ( hi == 27 && lo ==  5 )   str = "MAG";             // 1b05
if                    ( hi == 25 && lo ==  6 )   str = "STRING";          // 1906
if                    ( hi == 33 && lo ==  2 )   str = "PATHTYPE";        // 2102
if                    ( hi == 15 && lo ==  3 )   str = "WIDTH";           // 0f03
if                    ( hi == 9  && lo ==  0 )   str = "PATH";            // 0900
if                    ( hi == 28 && lo ==  5 )   str = "ANGLE";           // 1C05
return str;
}

double                Real_8(int X0, int X1, int X2, int X3,int X4, int X5, int X6, int X7 )
{ if                  ( X0 <0 ) X0 =  X0+256;
if                  ( X1 <0 ) X1 =  X1+256;
if                  ( X2 <0 ) X2 =  X2+256;
if                  ( X3 <0 ) X3 =  X3+256;
if                  ( X4 <0 ) X4 =  X4+256;
if                  ( X5 <0 ) X5 =  X5+256;
if                  ( X6 <0 ) X6 =  X6+256;
if                  ( X7 <0 ) X7 =  X7+256;
int                 exp , i ,bit,testbit, scalebit;
exp                 = (X0 & 127);                        // will bit mask to  = 01111111
exp =               0;
for                 (i=1; i< 8  ; i++)
{ bit =               (int) pow(2,7-i);
exp =               exp + (X0 & bit);
} exp                 = exp-65;                            // add offset
double              matval,matvalb , value;
matval =            0;
for                 (i=0; i< 8  ; i++)
{ bit =                pow(2,7-i);
scalebit =           pow(2,i);
testbit =           (X1 & bit);
matvalb =           (double) 8*(X1 & bit)/(bit*scalebit);
matval  =           matval + matvalb;
matvalb =           (double) 8*(X2 & bit)/(256*bit*scalebit);
matval  =           matval + matvalb;
matvalb =           (double) 8*(X3 & bit)/(256*256*bit*scalebit);
matval  =           matval + matvalb;
} value =             matval*pow(16,exp);
return value;
}

int                   Int_Sign4( int first, int second, int third, int forth  )
{ int                 numb ;
if                  ( second <0 ) second =  second+256;
if                  ( third  <0 ) third  =  third +256;
if                  ( forth  <0 ) forth  =  forth +256;
numb  =             256*(256*(256*first + second)+third )+forth;
return numb;
}

int                   Numb_Bytes( int hi, int lo  )
{ int                 numb ;
if                  ( hi <0 ) hi =  hi+256;
if                  ( lo <0 ) lo =  lo+256;
numb  =256*hi + lo;
return numb;
}

unsigned              Int_2u( unsigned   hi, unsigned  lo  )
{ int                 numb ;
numb  =256*hi + lo;
// cout              <<hi<<" "<<lo<<""<<numb<< "  \n" ;
return numb;
}

============Compile/RUN========================
[Session started at 2009-05-07 16:10:43 -0700.]
M1TEST.SF is the file being read
BGNLIB         LIBNAME = M1TEST.DB   FONTS = GDSII:CALMAFONT.TX
GENERATIONS 3  UNITS   = 0.001  1e-09
BGNSTR         STRNAME = M1TEST
BOUNDARY       LAYER   = 8   DATATYPE = 0
XY =           -23100 32500 -23100 12500 -6400 12500 -6400 32500 -23100 32500
ENDEL
PATH           LAYER   = 8   DATATYPE = 0
PATHTYPE 2     WIDTH     1400
XY =           -12100 23000 25600 23000 25600 11700 40400 11700
ENDEL
TEXT           LAYER   = 8   TEXTTYPE 0   PRESENTATION 8   STRANS none  MAG 3
XY =           -17000 25400
STRING         VCC
ENDEL
TEXT           LAYER   = 8   TEXTTYPE 0   PRESENTATION 8   STRANS none  MAG 2
ANGLE 90       XY =           -18700 14400
STRING         VCC2
ENDEL
SREF           SNAME  AT_ZERO   STRANS none  XY =           0 0
ENDEL
PATH           LAYER   = 10   DATATYPE = 0
PATHTYPE 2     WIDTH     1800
XY =           -700 5900 6200 5900 6200 -5300
ENDEL
ENDSTR
BGNSTR         STRNAME = AT_ZERO
BOUNDARY       LAYER   = 50   DATATYPE = 1
XY =           -1000 0 -1000 -1000 0 -1000 0 0 -1000 0
ENDEL
BOUNDARY       LAYER   = 50   DATATYPE = 1
XY =           0 1000 0 0 1000 0 1000 1000 0 1000
ENDEL
ENDSTR
ENDLIB

============Convert_BMP========

#include                <iostream>
#include                <fstream>
#include                <math.h>
using namespace         std;
ifstream::pos_type      getPointer;
const char             *fname;
char                    str[60];

int                     Int_Sign4( int first, int second, int third, int forth  ) ;
int                     Int_USign4( int first, int second, int third, int forth  );
int                     Int_USign2( int first, int second );
int                     Int_Sign2( int first, int second );
int                     Int_USign1( int first);
int                     Int_USign1s( int first);
double                  Extend_10(int X0,int X1,int X2,int X3,int X4,int X5,int X6,int X7,int X8,int X9 );

int                     main (int argc, char * const argv[])
{ int                   val , i , j ;
fname =              "000.bmp";
cout                  <<" "<< fname << "  " ;
ifstream              file (fname, ios::in|ios::binary|ios::ate);
if                    (file.is_open())
{ getPointer =          file.tellg();  cout << "       file size is " << getPointer << " \n";
file.seekg (          0, ios::beg);       // repositions get pointer to beginning
}
cout <<               "ADDR  TYPE          VALUE   \n";

getPointer =          file.tellg();  cout <<  getPointer << "     BMP_HEADER  ";
file.read(str,2);     str[2]= '\0';  cout <<"  " << str << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "     FILE_SIZE   ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]  );
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "     ALWAYS_ZERO ";
val =                 Int_USign2( str[1], str[0] );
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "     ALWAYS_ZERO ";
val =                 Int_USign2( str[1], str[0] );
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    OFFSET2DATA ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    BM_HEADSIZE ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    WIDTH_PIXEL ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    HEIGHT_PIXL ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    NUMB_PLANES ";
val =                 Int_USign2( str[1], str[0] );
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    BITS_PIXEL  ";
val =                 Int_USign2( str[1], str[0] );
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    COMPRESS    ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    IMAGESIZE   ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    PIXEL/METER ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    PIXEL/METER ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    NUMB_COLORS ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    IMPORTANTC  ";
val =                 Int_USign4( str[3], str[2], str[1], str[0]);
cout <<"  " << val << " \n" ;

getPointer =          file.tellg();  cout <<  getPointer << "    BEGIN_DATA  \n";

cout <<              "      bgr bgr bgr bgr bgr bgr bgr bgr bgr bgr pad\n" ;

for                 (j=0; j< 10  ; j++)
{ cout <<             "row "<< j <<" " ;
for                 (i=0; i< 10  ; i++)
{ file.read(str,1);  val = Int_USign1s( str[0]);cout <<"" << val << "" ;
file.read(str,1);  val = Int_USign1s( str[0]);cout <<"" << val << "" ;
file.read(str,1);  val = Int_USign1s( str[0]);cout <<"" << val << " " ;
} for                 (i=0; i< 2  ; i++)
{ file.read(str,1);  val = Int_USign1s( str[0]);cout <<"" << val << " " ;
} cout <<" \n" ;
}
return 0;
}

double                Extend_10(int X0,int X1,int X2,int X3,int X4,int X5,int X6,int X7,int X8,int X9 )
{ if                  ( X0 <0 ) X0 =  X0+256;
if                  ( X1 <0 ) X1 =  X1+256;
if                  ( X2 <0 ) X2 =  X2+256;
if                  ( X3 <0 ) X3 =  X3+256;
if                  ( X4 <0 ) X4 =  X4+256;
if                  ( X5 <0 ) X5 =  X5+256;
if                  ( X6 <0 ) X6 =  X6+256;
if                  ( X7 <0 ) X7 =  X7+256;
if                  ( X8 <0 ) X8 =  X8+256;
if                  ( X9 <0 ) X9 =  X9+256;
int                 exp , i ,bit,testbit, scalebit;
exp                 = (X0 & 127);         // mask = 01111111
exp =               0;                    //cout << "  exp "<< exp <<" <<   \n" ;
for                 (i=1; i< 8  ; i++)
{ bit =               (int) pow(2,15-i);
exp =               exp + (X0 & bit);
}
for                 (i=0; i< 8  ; i++)
{ bit =               (int) pow(2,7-i);
exp =               exp + (X1 & bit);
} exp                 = exp +1;  // add offset
double              matval,matvalb , value;
matval =            0;
for                 (i=0; i< 8  ; i++)
{ bit =                pow(2,7-i);
scalebit =           pow(2,i+3);
testbit =           (X2 & bit);
matvalb =           (double) 8*(X2 & bit)/(bit*scalebit);
matval  =           matval + matvalb;
matvalb =           (double) 8*(X3 & bit)/(256*bit*scalebit);
matval  =           matval + matvalb;
matvalb =           (double) 8*(X4 & bit)/(256*256*bit*scalebit);
matval  =           matval + matvalb;
} value =             matval*pow(2,exp);
return value;
}

int                   Int_Sign2( int first, int second )
{ int                 numb ;
if                  ( second <0 ) second =  second+256;
numb  =             256*first + second;
return numb;
}

int                   Int_USign2( int first, int second )
{ int                 numb ;
if                  ( first  <0 ) first  =  first+256;
if                  ( second <0 ) second =  second+256;
numb  =             256*first + second;
return numb;
}

int                   Int_USign1( int first)
{ int                 numb ;
if                  ( first  <0 ) first  =  first+256;
numb  =             first ;
return numb;
}

int                   Int_USign1s( int first)
{ int                 numb ;
if                  ( first  <0 ) first  =  first+256;
numb  =             first/255 ;
return numb;
}

int                   Int_USign4( int first, int second, int third, int forth  )
{ int                 numb ;
if                  ( first  <0 ) first  =  first +256;
if                  ( second <0 ) second =  second+256;
if                  ( third  <0 ) third  =  third +256;
if                  ( forth  <0 ) forth  =  forth +256;
numb  =             256*(256*(256*first + second)+third )+forth;
return numb;
}

int                   Int_Sign4( int first, int second, int third, int forth  )
{ int                 numb ;
if                  ( second <0 ) second =  second+256;
if                  ( third  <0 ) third  =  third +256;
if                  ( forth  <0 ) forth  =  forth +256;
numb  =             256*(256*(256*first + second)+third )+forth;
// cout << " " << first << " " << second<< " " << third<< " " << forth << " \n";
return numb;
}

=================Compile/RUN========================
[Session started at 2009-01-03 15:53:45 -0800.]
000.bmp         file size is 374
2     FILE_SIZE     374
6     ALWAYS_ZERO   0
8     ALWAYS_ZERO   0
10    OFFSET2DATA   54
18    WIDTH_PIXEL   10
22    HEIGHT_PIXL   10
26    NUMB_PLANES   1
28    BITS_PIXEL    24
30    COMPRESS      0
34    IMAGESIZE     320
38    PIXEL/METER   2835
42    PIXEL/METER   2835
46    NUMB_COLORS   0
50    IMPORTANTC    0
54    BEGIN_DATA
bgr bgr bgr bgr bgr bgr bgr bgr bgr bgr pad
row 0 111 111 111 111 111 111 111 111 111 111 0 0
row 1 111 111 111 111 111 111 111 111 111 111 0 0
row 2 111 111 111 111 111 111 111 111 111 111 0 0
row 3 111 111 111 111 111 111 111 111 111 111 0 0
row 4 111 000 111 001 111 010 111 100 111 011 0 0
row 5 111 000 111 001 111 010 111 100 111 011 0 0
row 6 111 000 111 001 111 010 111 100 111 011 0 0
row 7 111 000 111 001 111 010 111 100 111 011 0 0
row 8 111 000 111 001 111 010 111 100 111 011 0 0
row 9 111 111 111 111 111 111 111 111 111 111 0 0

#include            <iostream>
#include            <fstream>
using               namespace std;
ifstream::pos_type size;
char *              memblock;
int                 main ()
{ int               i ,j , h, l , z , m, s;
ifstream          file ("/Users/donsauer/Desktop/cmdtests/3N45E007.hgt", ios::in|ios::binary|ios::ate);
ofstream          myfile ("/Users/donsauer/Desktop/1.txt");
if                (file.is_open())
{ size =            file.tellg();
cout              << " file size is " << size ;
memblock =        new char [size];
file.seekg (0, ios::beg);
file.close();
cout              << "  the complete file content is in memory \n" ;
s=                3;
m =               1201*s ;   // 7200 points per row   file 25934402 is 3602X7200
m =               3601;
for               (j=0; j< 180*2; j=j+4)
{ for               (i=2250; i< 2460; i=i+2)
{ h =               (int) memblock[ 2*i +m*j];
if                ( h < 0 )  h=h+256;
l =               (int) memblock[2*i+1 +m*j];
if                ( l < 0 )  l=l+256;
z =               (256*h +l)-2000;
myfile            << z <<  " " ;
} myfile            <<  "\n" ;
}                   myfile.close()
delete[]          memblock;
} else cout         << "Unable to open file";
return            0;
}

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string line;
ifstream myfile ("/Users/donsauer/Desktop/zzzz/cmdtests/example.txt");
if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}

//========write a complete text file========

#include           <iostream>
#include           <fstream>
using              namespace std;

int                main (int argc, char * const argv[])
{ ofstream         myfile ("/Users/donsauer/Desktop/cmdtests/example.txt");
if              (myfile.is_open())
{ myfile           << "This is a line.\n";
myfile           << "This is another line.\n";
myfile.close();
} else cout        << "Unable to open file";
return           0;
std::cout        << "Hello, World!\n"; // insert code here...
return 0;
}

//========obtain file size========

// obtaining file size
#include            <iostream>
#include            <fstream>
using               namespace std;
int                 main ()
{ long              begin,end;
ifstream          myfile ("/Users/donsauer/Desktop/cmdtests/example.txt");
begin =           myfile.tellg();
myfile.seekg (0, ios::end);
end =             myfile.tellg();
myfile.close();
cout              << "size is: " << (end-begin) << " bytes.\n";
return            0;
}