Link to home
Start Free TrialLog in
Avatar of epichero22
epichero22Flag for United States of America

asked on

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.
Avatar of phoffric
phoffric

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

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.
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.
ASKER CERTIFIED SOLUTION
Avatar of phoffric
phoffric

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of epichero22

ASKER

Too many replies.  Why not just post it all in one?