Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
969 runge 1
 
2
#include <string>
3
 
4
/***************************************************************************
5
 *   Copyright (C) 2004 by Mattias Runge                                   *
6
 *   mattias@mrunge.se                                                     *
7
 *                                                                         *
8
 *   This program is free software; you can redistribute it and/or modify  *
9
 *   it under the terms of the GNU General Public License as published by  *
10
 *   the Free Software Foundation; either version 2 of the License, or     *
11
 *   (at your option) any later version.                                   *
12
 *                                                                         *
13
 *   This program is distributed in the hope that it will be useful,       *
14
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
15
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
16
 *   GNU General Public License for more details.                          *
17
 *                                                                         *
18
 *   You should have received a copy of the GNU General Public License     *
19
 *   along with this program; if not, write to the                         *
20
 *   Free Software Foundation, Inc.,                                       *
21
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
22
 ***************************************************************************/
23
#include "tools.h"
24
 
25
unsigned int bin2uint(string bin)
26
{
27
    unsigned int num = 0;
28
 
29
    for (int n = bin.length()-1; n >= 0; n--)
30
    {
31
        if (bin[n] == '1')
32
            num += (unsigned int)pow(2.0f, (int)(bin.length()-1-n));
33
    }
34
 
35
    return num;
36
}
37
 
38
string invert(string bin)
39
{
40
    string inverted;
41
 
42
    for (int n = 0; n < bin.length(); n++)
43
        inverted += (bin[n] == '1' ? '0' : '1');
44
 
45
    return inverted;
46
}
47
 
48
float bin2float(string bin)
49
{
50
    float num = 0;
51
 
52
    if (bin.length() == 0)
53
        return 0.0f;
54
 
55
    bool isNegative = false;;
56
 
57
    if (bin[0] == '1')
58
    {
59
        bin = invert(bin);
60
        isNegative = true;
61
    }
62
 
63
    for (int n = bin.length()-1; n > 0; n--)
64
    {
65
        if (bin[n] == '1')
66
            num += pow(2.0f, (int)(bin.length()-1-n));
67
    }
68
 
69
    num /= 64.0f;
70
 
71
    if (isNegative)
72
        num = -num;
73
 
74
    return num;
75
}
76
 
77
string bin2hex(string bin)
78
{
79
    string hex;
80
 
81
    while (bin.size() > 0)
82
    {
83
        string part = bin.substr(0, 4);
84
        bin.erase(0, part.size());
85
 
86
        while (part.size() < 4)
87
            part = "0" + part;
88
 
89
        if (part == "0000")
90
            hex += '0';
91
        else if (part == "0001")
92
            hex += '1';
93
        else if (part == "0010")
94
            hex += '2';
95
        else if (part == "0011")
96
            hex += '3';
97
        else if (part == "0100")
98
            hex += '4';
99
        else if (part == "0101")
100
            hex += '5';
101
        else if (part == "0110")
102
            hex += '6';
103
        else if (part == "0111")
104
            hex += '7';
105
        else if (part == "1000")
106
            hex += '8';
107
        else if (part == "1001")
108
            hex += '9';
109
        else if (part == "1010")
110
            hex += 'a';
111
        else if (part == "1011")
112
            hex += 'b';
113
        else if (part == "1100")
114
            hex += 'c';
115
        else if (part == "1101")
116
            hex += 'd';
117
        else if (part == "1110")
118
            hex += 'e';
119
        else if (part == "1111")
120
            hex += 'f';
121
    }
122
 
123
    return hex;
124
}
125
 
126
string float2bin(float num, int length)
127
{
128
    string bin;
129
 
130
    ///FIXME
131
 
132
    while (bin.size() < length)
133
        bin = "0" + bin;
134
 
135
    return bin;
136
}
137
 
138
string hex2bin(string hex)
139
{
140
    hex = strtolower(hex);
141
 
142
    string bin;
143
 
144
    for (int n = 0; n < hex.length(); n++)
145
    {
146
        switch (hex[n])
147
        {
148
            case '0': bin += "0000"; break;
149
            case '1': bin += "0001"; break;
150
            case '2': bin += "0010"; break;
151
            case '3': bin += "0011"; break;
152
            case '4': bin += "0100"; break;
153
            case '5': bin += "0101"; break;
154
            case '6': bin += "0110"; break;
155
            case '7': bin += "0111"; break;
156
            case '8': bin += "1000"; break;
157
            case '9': bin += "1001"; break;
158
            case 'a': bin += "1010"; break;
159
            case 'b': bin += "1011"; break;
160
            case 'c': bin += "1100"; break;
161
            case 'd': bin += "1101"; break;
162
            case 'e': bin += "1110"; break;
163
            case 'f': bin += "1111"; break;
164
        }
165
    }
166
 
167
    return bin;
168
}
169
 
170
string uint2bin(unsigned int num, int length)
171
{
172
    string bin;
173
 
174
    while (num)
175
    {
176
        bin = char((num&1)+'0') + bin;
177
        num >>= 1;
178
    }
179
 
180
    while (bin.size() < length)
181
        bin = "0" + bin;
182
 
183
    return bin;
184
}
185
 
186
 
187
vector<string> explode(string delimiter, string str)
188
{
189
    vector<string> parts;
190
    string::size_type startPos = 0;
191
    string::size_type endPos = 0;
192
 
193
    while ((endPos = str.find(delimiter, startPos)) != string::npos)
194
    {
195
        parts.push_back(str.substr(startPos, endPos-startPos));
196
        startPos = endPos+delimiter.length();
197
    }
198
 
199
    if (startPos < str.length())
200
    {
201
        parts.push_back(str.substr(startPos, str.length()-startPos));
202
    }
203
 
204
    return parts;
205
}
206
 
207
string strtoupper(string s)
208
{
209
    for (unsigned int n = 0; n < s.size(); n++)
210
        s[n] = (char)toupper(s[n]);
211
 
212
    return s;
213
}
214
 
215
string strtolower(string s)
216
{
217
    for (unsigned int n = 0; n < s.size(); n++)
218
        s[n] = (char)tolower(s[n]);
219
 
220
    return s;
221
}
222
 
223
string trim(string s)
224
{
225
    return trim(s, ' ');
226
}
227
 
228
string trim(string s, char c)
229
{
230
    while (s[0] == c)
231
        s.erase(0, 1);
232
 
233
    while (s[s.length()-1] == c)
234
        s.erase(s.length()-1, 1);
235
 
236
    return s;
237
}
238
 
239
int stoi(const string s)
240
{
241
    istringstream in(s);
242
    int i;
243
    in >> i;
244
    return i;
245
}
246
 
247
string itos(int i)
248
{
249
    ostringstream out;
250
    out << i;
251
    return out.str();
252
}
253
 
254
float stof(const string s)
255
{
256
    istringstream in(s);
257
    float f;
258
    in >> f;
259
    return f;
260
}
261
 
262
string ftos(float f)
263
{
264
    ostringstream out;
265
    out << f;
266
    return out.str();
267
}
268
 
269
string str_replace(string search, string replace, string str)
270
{
271
    vector<string> parts = explode(search, str);
272
 
273
    string result;
274
    for (int n = 0; n < parts.size(); n++)
275
    {
276
        result += parts[n];
277
 
278
        if (n < parts.size()-1)
279
            result += replace;
280
    }
281
 
282
    return result;
283
}
284
 
285
string file_get_contents(string filename)
286
{
287
    ifstream srcfile(filename.c_str());
288
 
289
    if (!srcfile.is_open())
290
    {
291
        srcfile.close();
292
        return "";
293
    }
294
 
295
    string buffer = "";
296
    string line;
297
 
298
    while (!srcfile.eof())
299
    {
300
        getline(srcfile, line);
301
 
302
        if (srcfile.eof())
303
            break;
304
 
305
        buffer += line + "\n";
306
    };
307
 
308
    srcfile.close();
309
 
310
    return buffer;
311
}
312
 
313
bool file_exists(string filename)
314
{
315
    ifstream file(filename.c_str());
316
    if (file.is_open())
317
    {
318
        file.close();
319
        return true;
320
    }
321
 
322
    return false;
323
}
324
 
325
string escape(string in)
326
{
327
    string out;
328
 
329
    for (int n = 0; n < in.length(); n++)
330
    {
331
        switch (in[n])
332
        {
333
            case '\n':
334
                out += "\\n";
335
                break;
336
 
337
            default:
338
                out += in[n];
339
                break;
340
        }
341
    }
342
 
343
    return out;
344
}
345
 
346
// FileTools
347
 
348
vector<string> FileTools::GetDirList(string path)
349
{
350
    DIR *dir = opendir(path.c_str());
351
    vector<string> list;
352
 
353
    if (!dir)
354
        return list;
355
 
356
    dirent *d;
357
    while ((d = readdir(dir)))
358
    {
359
        if (d->d_name[0] == '.')
360
            continue;
361
 
362
        list.push_back(d->d_name);
363
    }
364
    closedir(dir);
365
 
366
    return list;
367
}
368
 
369
string FileTools::GetUniqeFilename(string path, string prefix, string postfix)
370
{
371
    time_t now;
372
    time(&now);
373
 
374
    string filename = path + prefix + itos(now);
375
 
376
    int index = 0;
377
    while (1)
378
    {
379
        string file = filename + itos(index) + postfix;
380
        if (!Exist(file))
381
            break;
382
        index++;
383
    }
384
 
385
    filename += itos(index) + postfix;
386
 
387
    return filename;
388
}
389
 
390
bool FileTools::SaveFile(string filepath, string data)
391
{
392
    ofstream destfile(filepath.c_str());
393
    if (!destfile.is_open())
394
    {
395
        destfile.close();
396
        return false;
397
    }
398
 
399
    destfile << data;
400
 
401
    destfile.close();
402
    return true;
403
}
404
 
405
string FileTools::Get(string src)
406
{
407
    ifstream srcfile(src.c_str());
408
    if (!srcfile.is_open())
409
    {
410
        srcfile.close();
411
        return "";
412
    }
413
 
414
    string buffer = "";
415
    string line;
416
    while (!srcfile.eof())
417
    {
418
        getline(srcfile, line);
419
        if (srcfile.eof())
420
            break;
421
        buffer += line + "\n";
422
    };
423
 
424
    srcfile.close();
425
 
426
    return buffer;
427
}
428
 
429
bool FileTools::Copy(string src, string dest)
430
{
431
    ifstream srcfile(src.c_str());
432
    if (!srcfile.is_open())
433
    {
434
        srcfile.close();
435
        return false;
436
    }
437
 
438
    ofstream destfile(dest.c_str());
439
    if (!destfile.is_open())
440
    {
441
        destfile.close();
442
        srcfile.close();
443
        return false;
444
    }
445
 
446
    string line;
447
    while (!srcfile.eof())
448
    {
449
        getline(srcfile, line);
450
        if (srcfile.eof())
451
            break;
452
        destfile << line << endl;
453
    };
454
 
455
    destfile.close();
456
    srcfile.close();
457
 
458
    return true;
459
}
460
 
461
bool FileTools::Exist(string filename)
462
{
463
    ifstream file(filename.c_str());
464
    if (file.is_open())
465
    {
466
        file.close();
467
        return true;
468
    }
469
 
470
    return false;
471
}
472
 
473
 
474
 
475
 
476
 
477
/*
478
void bd()
479
{
480
         int n,b=0,a[6],i=0,t=0;
481
         clrscr();
482
         printf("Conversion from Binary to Decimal\n");
483
         printf("Enter Binary Number\n");
484
         scanf("%d",&n);
485
         while(n!=0)
486
         {
487
          a[i]=n%10;
488
          n=n/10;
489
          if(a[i]!=1 && a[i]!=0)
490
           t=1;
491
          i++;
492
         }
493
         a[i]=2;
494
         n=1;
495
         for(i=0;a[i]!=2;i++)
496
         {
497
          b=b+a[i]*n;
498
          n=n*2;
499
         }
500
         if(t==0)
501
          printf("Decimal Equivalent=%d",B);
502
         else if(t==1)
503
          printf("Entered number is not binary.");
504
 
505
}
506
 
507
void db()
508
{
509
         int dec,bin,n,i=0,a[10];
510
         clrscr();
511
         printf("Conversion from Decimal to Binary\n");
512
         printf("Input decimal no.");
513
         scanf("%d",&dec);
514
         do
515
         {
516
         a[i]=dec%2;
517
         dec=dec/2;
518
         i++;
519
         }while(dec!=0);
520
         for(n=i-1;n>=0;n--)
521
         printf("%d",a[n]);
522
}
523
 
524
void doc()
525
{
526
         int n,i,a[10];
527
         clrscr();
528
         printf("Conversion from Decimal to Octal\n");
529
         printf("Enter a Decimal number\n");
530
         scanf("%d",&n);
531
         i=0;
532
         printf("Octal equavalent of %d is ",n);
533
         while(n!=0)
534
         {
535
          a[i]=n%8;
536
          n=n/8;
537
          i++;
538
         }
539
         i--;
540
         for(;i>=0;i--)
541
          printf("%d",a[i]);
542
}
543
 
544
void dh(long n)
545
{
546
         long i;
547
         if(n>0)
548
         {
549
          i=n%16;
550
          n=n/16;
551
          dh(n);
552
          if(i>=10)
553
          {
554
           switch(i)
555
           {
556
            case 10:
557
             printf("A");
558
             break;
559
            case 11:
560
             printf("B");
561
             break;
562
            case 12:
563
             printf("C");
564
             break;
565
            case 13:
566
             printf("D");
567
             break;
568
            case 14:
569
             printf("E");
570
             break;
571
            case 15:
572
             printf("F");
573
             break;
574
           }
575
          }
576
          else
577
           printf("%ld",i);
578
         }
579
}
580
 
581
void od()
582
{
583
         unsigned long n,i=0,a,p=1,t=0;
584
         clrscr();
585
         printf("Conversion from Octal to Decimal\n");
586
         printf("Enter a Octal number\n");
587
         scanf("%ld",&n);
588
         i=0;
589
         printf("Decimal equavalent of %ld",n);
590
         while(n!=0)
591
         {
592
          a=n%10;
593
          if(a>7)
594
           t=1;
595
          n=n/10;
596
          i=i+a*p;
597
          p=p*8;
598
         }
599
         if(t==0)
600
          printf("= %ld",i);
601
         else if(t==1)
602
          printf(" can't be calculated because it is not an Octal Number.\n");
603
}
604
 
605
void ob()
606
{
607
         int n,a[6],i=0,t=0;
608
         clrscr();
609
         printf("Convertion from Octal to Binary.\n");
610
         printf("Enter an Octal Number.\n");
611
         scanf("%d",&n);
612
         while(n!=0)
613
         {
614
          a[i]=n%10;
615
          n=n/10;
616
          if(a[i]>7)
617
           t=1;
618
          i++;
619
         }
620
         i--;
621
         if(t==0)
622
          for(;i>=0;i--)
623
          {
624
           switch(a[i])
625
           {
626
            case 0:
627
             printf("000");
628
             break;
629
            case 1:
630
             printf("001");
631
             break;
632
            case 2:
633
             printf("010");
634
             break;
635
            case 3:
636
             printf("011");
637
             break;
638
            case 4:
639
             printf("100");
640
             break;
641
            case 5:
642
             printf("101");
643
             break;
644
            case 6:
645
             printf("110");
646
             break;
647
            case 7:
648
             printf("111");
649
             break;
650
           }
651
          }
652
         if(t==1)
653
          printf("Not a Octal number\n");
654
}
655
 
656
void bo()
657
{
658
         int i=0,a[5],t=0;
659
         long int n;
660
         clrscr();
661
         printf("Convertion From Binary to Octal\n");
662
         printf("Enter a Binary number\n");
663
         scanf("%ld",&n);
664
         while(n!=0)
665
         {
666
          a[i]=n%1000;
667
          n=n/1000;
668
          if(a[i]>111)
669
           t=1;
670
          i++;
671
         }
672
         i--;
673
         if(t==0)
674
          for(;i>=0;i--)
675
          {
676
           switch(a[i])
677
           {
678
            case 0:
679
             printf("0");
680
             break;
681
            case 1:
682
             printf("1");
683
             break;
684
            case 10:
685
             printf("2");
686
             break;
687
            case 11:
688
             printf("3");
689
             break;
690
            case 100:
691
             printf("4");
692
             break;
693
            case 101:
694
             printf("5");
695
             break;
696
            case 110:
697
             printf("6");
698
             break;
699
            case 111:
700
             printf("7");
701
             break;
702
            default:
703
   printf("\nEntered number is not binary.\nPrinted value is not correct.\n");
704
             break;
705
           }
706
          }
707
         if(t==1)
708
          printf("Number is not Binary\n");
709
}
710
 
711
void bh()
712
{
713
         int i=0,a[5],t=0;
714
         long int n;
715
         clrscr();
716
         printf("Convertion from Binary to Hexadecimal\n");
717
         printf("Enter a Binary number\n");
718
         scanf("%ld",&n);
719
         while(n!=0)
720
         {
721
          a[i]=n%10000;
722
          n=n/10000;
723
          if(a[i]>1111)
724
           t=1;
725
          i++;
726
         }
727
         i--;
728
         if(t==0)
729
          for(;i>=0;i--)
730
          {
731
           switch(a[i])
732
           {
733
            case 0:
734
             printf("0");
735
             break;
736
            case 1:
737
             printf("1");
738
             break;
739
            case 10:
740
             printf("2");
741
             break;
742
            case 11:
743
             printf("3");
744
             break;
745
            case 100:
746
             printf("4");
747
             break;
748
            case 101:
749
             printf("5");
750
             break;
751
            case 110:
752
             printf("6");
753
             break;
754
            case 111:
755
             printf("7");
756
             break;
757
            case 1000:
758
             printf("8");
759
             break;
760
            case 1001:
761
             printf("9");
762
             break;
763
            case 1010:
764
             printf("A");
765
             break;
766
            case 1011:
767
             printf("B");
768
             break;
769
            case 1100:
770
             printf("C");
771
             break;
772
            case 1101:
773
             printf("D");
774
             break;
775
            case 1110:
776
             printf("E");
777
             break;
778
            case 1111:
779
             printf("F");
780
             break;
781
            default:
782
     printf("\nEntered number is not binary.\nPrinted value is not correct.\n");
783
             break;
784
           }
785
          }
786
         if(t==1)
787
          printf("Number is not Binary\n");
788
}
789
 
790
void hb()
791
{
792
         int i;
793
         char s[20];
794
         clrscr();
795
         printf("Convertion from Hexadecimal to Binary\n");
796
         printf("Enter a Hexadecimal number\n");
797
         scanf("%s",s);
798
         //gets(s);
799
         printf("Binary Equivalent=");
800
         for(i=0;s[i]!=NULL;i++)
801
         {
802
          switch(s[i])
803
           {
804
            case '0':
805
             printf("0000");
806
             break;
807
            case '1':
808
             printf("0001");
809
             break;
810
            case '2':
811
             printf("0010");
812
             break;
813
            case '3':
814
             printf("0011");
815
             break;
816
            case '4':
817
             printf("0100");
818
             break;
819
            case '5':
820
             printf("0101");
821
             break;
822
            case '6':
823
             printf("0110");
824
             break;
825
            case '7':
826
             printf("0111");
827
             break;
828
            case '8':
829
             printf("1000");
830
             break;
831
            case '9':
832
             printf("1001");
833
             break;
834
            case 'a':
835
            case 'A':
836
             printf("1010");
837
             break;
838
            case 'b':
839
            case 'B':
840
             printf("1011");
841
             break;
842
            case 'c':
843
            case 'C':
844
             printf("1100");
845
             break;
846
            case 'd':
847
            case 'D':
848
             printf("1101");
849
             break;
850
            case 'e':
851
            case 'E':
852
             printf("1110");
853
             break;
854
            case 'f':
855
            case 'F':
856
             printf("1111");
857
             break;
858
            default:
859
       printf("\nEntered number is not Hexadecimal.\nPrinted value is not correct.\n");
860
             break;
861
           }
862
          }
863
}
864
 
865
void hd()
866
{
867
         int i,a[20];
868
         unsigned long int h=0,m=1;
869
         char s[20];
870
         clrscr();
871
         printf("Convertion from Hexadecimal to Decimal\n");
872
         printf("Enter a Hexadecimal number\n");
873
         scanf("%s",s);
874
         printf("Decimal Equivalent=");
875
         for(i=0;s[i]!=NULL;i++)
876
         {
877
          switch(s[i])
878
           {
879
            case '0':
880
             a[i]=0;
881
             break;
882
            case '1':
883
             a[i]=1;
884
             break;
885
            case '2':
886
             a[i]=2;
887
             break;
888
            case '3':
889
             a[i]=3;
890
             break;
891
            case '4':
892
             a[i]=4;
893
             break;
894
            case '5':
895
             a[i]=5;
896
             break;
897
            case '6':
898
             a[i]=6;
899
             break;
900
            case '7':
901
             a[i]=7;
902
             break;
903
            case '8':
904
             a[i]=8;
905
             break;
906
            case '9':
907
             a[i]=9;
908
             break;
909
            case 'a':
910
            case 'A':
911
             a[i]=10;
912
             break;
913
            case 'b':
914
            case 'B':
915
             a[i]=11;
916
             break;
917
            case 'c':
918
            case 'C':
919
             a[i]=12;
920
             break;
921
            case 'd':
922
            case 'D':
923
             a[i]=13;
924
             break;
925
            case 'e':
926
            case 'E':
927
             a[i]=14;
928
             break;
929
            case 'f':
930
            case 'F':
931
             a[i]=15;
932
             break;
933
            default:
934
    printf("\nEntered number is not Hexadecimal.\nPrinted value is not correct.\n");
935
             break;
936
           }
937
         }
938
         i--;
939
         for(;i>=0;i--)
940
         {
941
          h=h+a[i]*m;
942
          m=m*16;
943
         }
944
          printf("%ld ",h);
945
}
946
 
947
void oh(long n)
948
{
949
         long i;
950
         if(n>0)
951
         {
952
          i=n%16;
953
          n=n/16;
954
          oh(n);
955
          if(i>=10)
956
          {
957
           switch(i)
958
           {
959
            case 10:
960
             printf("A");
961
             break;
962
            case 11:
963
             printf("B");
964
             break;
965
            case 12:
966
             printf("C");
967
             break;
968
            case 13:
969
             printf("D");
970
             break;
971
            case 14:
972
             printf("E");
973
             break;
974
            case 15:
975
             printf("F");
976
             break;
977
           }
978
          }
979
          else
980
           printf("%ld",i);
981
         }
982
}
983
 
984
void ho()
985
{
986
         int i,a[20];
987
         unsigned long int h=0,m=1;
988
         char s[20];
989
         clrscr();
990
         printf("Convertion from Hexadecimal to Octal\n");
991
         printf("Enter a Hexadecimal number\n");
992
         scanf("%s",s);
993
         // Converting hex to dec first
994
         for(i=0;s[i]!=NULL;i++)
995
         {
996
          switch(s[i])
997
           {
998
            case '0':
999
             a[i]=0;
1000
             break;
1001
            case '1':
1002
             a[i]=1;
1003
             break;
1004
            case '2':
1005
             a[i]=2;
1006
             break;
1007
            case '3':
1008
             a[i]=3;
1009
             break;
1010
            case '4':
1011
             a[i]=4;
1012
             break;
1013
            case '5':
1014
             a[i]=5;
1015
             break;
1016
            case '6':
1017
             a[i]=6;
1018
             break;
1019
            case '7':
1020
             a[i]=7;
1021
             break;
1022
            case '8':
1023
             a[i]=8;
1024
             break;
1025
            case '9':
1026
             a[i]=9;
1027
             break;
1028
            case 'a':
1029
            case 'A':
1030
             a[i]=10;
1031
             break;
1032
            case 'b':
1033
            case 'B':
1034
             a[i]=11;
1035
             break;
1036
            case 'c':
1037
            case 'C':
1038
             a[i]=12;
1039
             break;
1040
            case 'd':
1041
            case 'D':
1042
             a[i]=13;
1043
             break;
1044
            case 'e':
1045
            case 'E':
1046
             a[i]=14;
1047
             break;
1048
            case 'f':
1049
            case 'F':
1050
             a[i]=15;
1051
             break;
1052
            default:
1053
      printf("\nEntered number is not Hexadecimal.\nPrinted value is not correct.\n");
1054
             break;
1055
           }
1056
         }
1057
         i--;
1058
         for(;i>=0;i--)
1059
         {
1060
          h=h+a[i]*m;
1061
          m=m*16;
1062
         }
1063
         // Now convering from decimal to octal (h)
1064
         i=0;
1065
         printf("Octal equavalent=");
1066
         while(h!=0)
1067
         {
1068
          a[i]=h%8;
1069
          h=h/8;
1070
          i++;
1071
         }
1072
         i--;
1073
         for(;i>=0;i--)
1074
          printf("%d",a[i]);
1075
}*/