[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 407
  • Last Modified:

Converting eight-bit binary to ASCII in C++

Hi,


I am writing a practice program on my computer generate all the ASCII characters in order based on their binary equivalents.  So what I'd like to do is start with an eight-bit binary number, convert it to ASCII, and output it on the screen.  The increment the binary number and output that and so on.  I'm not really sure how to start this and was wondering if you could help.
0
epichero22
Asked:
epichero22
  • 4
1 Solution
 
phoffricCommented:
Here's the output (but EE will not display at this time many values above 127:
0
1   ¿
2   ¿
3   ¿
4   ¿
5   ¿
6   ¿
7
8
9
10

11   ¿
12   ¿
13
14   ¿
15   ¤
16   ¿
17   ¿
18   ¿
19   ¿
20   ¶
21   §
22   ¿
23   ¿
24   ¿
25   ¿
26   ¿
27   ¿
28   ¿
29   ¿
30   ¿
31   ¿
32
33   !
34   "
35   #
36   $
37   %
38   &
39   '
40   (
41   )
42   *
43   +
44   ,
45   -
46   .
47   /
48   0
49   1
50   2
51   3
52   4
53   5
54   6
55   7
56   8
57   9
58   :
59   ;
60   <
61   =
62   >
63   ?
64   @
65   A
66   B
67   C
68   D
69   E
70   F
71   G
72   H
73   I
74   J
75   K
76   L
77   M
78   N
79   O
80   P
81   Q
82   R
83   S
84   T
85   U
86   V
87   W
88   X
89   Y
90   Z
91   [
92   \
93   ]
94   ^
95   _
96   `
97   a
98   b
99   c
100   d
101   e
102   f
103   g
104   h
105   i
106   j
107   k
108   l
109   m
110   n
111   o
112   p
113   q
114   r
115   s
116   t
117   u
118   v
119   w
120   x
121   y
122   z
123   {
124   |
125   }
126   ~
127   ¦
128   Ç
129   ü
130   é
131   â
132   ä
133   à
134   å
135   ç
136   ê
137   ë
138   è
139   ï
140   î
141   ì
142   Ä
143   Å
144   É
145   æ
146   Æ
147   ô
148   ö
149   ò
150   û
151   ù
152   ÿ
153   Ö
154   Ü
155   ¢
156   £
157   ¥
158   P
159   ƒ
160   á
161   í
162   ó
163   ú
164   ñ
165   Ñ
166   ª
167   º
168   ¿
169   ¬
170   ¬
171   ½
172   ¼
173   ¡
174   «
175   »
176   ¦
177   ¦
178   ¦
179   ¦
180   ¦
181   ¦
182   ¦
183   +
184   +
185   ¦
186   ¦
187   +
188   +
189   +
190   +
191   +
192   +
193   -
194   -
195   +
196   -
197   +
198   ¦
199   ¦
200   +
201   +
202   -
203   -
204   ¦
205   -
206   +
207   -
208   -
209   -
210   -
211   +
212   +
213   +
214   +
215   +
216   +
217   +
218   +
219   ¦
220   _
221   ¦
222   ¦
223   ¯
224   a
225   ß
226   G
227   p
228   S
229   s
230   µ
231   t
232   F
233   T
234   O
235   d
236   8
237   f
238   e
239   n
240   =
241   ±
242   =
243   =
244   (
245   )
246   ÷
247   ˜
248   °
249   ·
250   ·
251   v
252   n
253   ²
254   ¦
255    

Open in new window

int main() {
    int k;
    for( k=0; k<256; ++k) {
        printf("%d   %c\n", k, k);
    }
}

Open in new window

0
 
phoffricCommented:
The above output was produced using VS 2010 Express in a DOS window.
Here is the ASCII chart for what the symbols are supposed to look like:
     http://www.ascii-code.com/
"The first 32 characters (i.e., 0-31) in the ASCII-table are unprintable control codes and are used to control peripherals such as printers."

Notice that the decimal number 10 has a line space after it. That is because decimal 10 corresponds to a linefeed.

The standard ASCII set are the decimal values from 32 (i.e., space) to 127. When their binary equivalent is sent to a monitor, then the monitor converts it to the corresponding symbol.
0
 
phoffricCommented:
In case you are interested in how print works, and the different ways to convert a variable to something that you can (usually) see on a screen, take a look at:
    http://www.cplusplus.com/reference/clibrary/cstdio/printf/

Notice that the %d takes an integer value and prints out the "Signed decimal integer"; and that %c simply prints out the "Character". For decimal values outside the range 32 .. 127, it may be possible to set the screen to yield different characters.
0
 
phoffricCommented:
In case you actually wanted to see the 8-bit binary representation as well,
 32      00100000
 33   !  00100001
 34   "  00100010
 35   #  00100011
 36   $  00100100
 37   %  00100101
 38   &  00100110
 39   '  00100111
 40   (  00101000
 41   )  00101001
 42   *  00101010
 43   +  00101011
 44   ,  00101100
 45   -  00101101
 46   .  00101110
 47   /  00101111
 48   0  00110000
 49   1  00110001
 50   2  00110010
 51   3  00110011
 52   4  00110100
 53   5  00110101
 54   6  00110110
 55   7  00110111
 56   8  00111000
 57   9  00111001
 58   :  00111010
 59   ;  00111011
 60   <  00111100
 61   =  00111101
 62   >  00111110
 63   ?  00111111
 64   @  01000000
 65   A  01000001
 66   B  01000010
 67   C  01000011
 68   D  01000100
 69   E  01000101
 70   F  01000110
 71   G  01000111
 72   H  01001000
 73   I  01001001
 74   J  01001010
 75   K  01001011
 76   L  01001100
 77   M  01001101
 78   N  01001110
 79   O  01001111
 80   P  01010000
 81   Q  01010001
 82   R  01010010
 83   S  01010011
 84   T  01010100
 85   U  01010101
 86   V  01010110
 87   W  01010111
 88   X  01011000
 89   Y  01011001
 90   Z  01011010
 91   [  01011011
 92   \  01011100
 93   ]  01011101
 94   ^  01011110
 95   _  01011111
 96   `  01100000
 97   a  01100001
 98   b  01100010
 99   c  01100011
100   d  01100100
101   e  01100101
102   f  01100110
103   g  01100111
104   h  01101000
105   i  01101001
106   j  01101010
107   k  01101011
108   l  01101100
109   m  01101101
110   n  01101110
111   o  01101111
112   p  01110000
113   q  01110001
114   r  01110010
115   s  01110011
116   t  01110100
117   u  01110101
118   v  01110110
119   w  01110111
120   x  01111000
121   y  01111001
122   z  01111010
123   {  01111011
124   |  01111100
125   }  01111101
126   ~  01111110

Open in new window

To produce the above results, I added a modifed version of the int2bin function defined in this post
     http://www.experts-exchange.com/Programming/Languages/C/Q_20287908.html#a6942302
   
#include <stdio.h>

char *int2bin(char num_8_bit,char *buf)
{
    int c = 8;
    buf[8]=0;
    do
    {
        buf[--c] = '0' + (num_8_bit & 1);
        num_8_bit = num_8_bit >> 1;
    }
    while (c);
    return buf;
}     


int main() {
    int k;
    char binaryString[65];
    for( k=32; k<127; ++k) {
        printf("%3d   %c  %s\n", k, k, int2bin(k,binaryString));
    }
}

Open in new window

0
 
epichero22Author Commented:
Too many replies.  Why not just post it all in one?
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

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