在C++中构造ASCII二进制代码,并运行到一个奇怪的错误中
我正在构建一个程序,将ASCII转换为二进制,然后将二进制转换为ASCII。到目前为止,我已经做了一些事情,逻辑似乎是合理的,但每次我试图编译它时都会遇到错误。此范围中未声明“二进制”错误。我试着四处寻找答案,但什么也找不到。下面是我的代码。当我试图将它从终端粘贴到这个文件中时,一些格式可能已经弄乱了在C++中构造ASCII二进制代码,并运行到一个奇怪的错误中,c++,string,binary,ascii,C++,String,Binary,Ascii,我正在构建一个程序,将ASCII转换为二进制,然后将二进制转换为ASCII。到目前为止,我已经做了一些事情,逻辑似乎是合理的,但每次我试图编译它时都会遇到错误。此范围中未声明“二进制”错误。我试着四处寻找答案,但什么也找不到。下面是我的代码。当我试图将它从终端粘贴到这个文件中时,一些格式可能已经弄乱了 #include <iostream> #include <fstream> #include <cmath> #include <stdlib.h
#include <iostream>
#include <fstream>
#include <cmath>
#include <stdlib.h> using namespace std;
void A_to_B(const char*);
void B_to_A(const char*);
int main(void) {
cout <<"ASCII/BINARY Converter" << endl;
cout <<"============================ \n \n" << endl;
char response;
char garbage[50];
cout <<"1. ASCII to Binary converter" << endl;
cout <<"2. Binary to ASCII Converter" << endl;
while(response !='1' && response !='2' && response !='N' && response !='n') {
cout <<"\n Enter \"1\" or \"2\" to specify task. Enter \"N\" to quit: ";
cin >> response;
cin.getline(garbage, 50);
if(response !='1' && response !='2' && response !='N' && response !='n') cout <<"The value you entered was invalid. Please try again" << endl;
}
if(response=='N' || response=='n') {
cout <<"User cancel" << endl;
exit(0);
}
char text[501];
cout <<"Enter the text/code you want to convert: ";
cin >> text;
if(response=='1') {
A_to_B(text);
}
else {
B_to_A(text);
}
cout <<"Conversion finished" << endl;
return 0;
}
void A_to_B(const char* input) {
int ascii;
int length=strlen(input);
cout <<" ";
for(int x=0;
x < length;
x++) {
ascii=input[x] char* binary_reverse=new char [9];
char* binary=new char [9];
int y=0;
while(ascii !=1) {
if(ascii % 2==0) {
binary_reverse[y]='0';
}
else if(ascii % 2==1) {
binary_reverse[y]='1';
}
ascii /=2;
y++;
}
if(ascii==1) {
binary_reverse[y]='1';
y++;
}
if(y < 8) {
for(;
y < 8;
y++) {
binary_reverse[y]='0';
}
}
for(int z=0;
z < 8;
z++) {
binary[z]=binary_reverse[7-z];
}
cout << binary;
delete [] binary_reverse;
delete [] binary;
}
cout << endl;
}
void B_to_A(const char* input) {
int length=strlen(input);
int binary[8];
int asciiNum=0;
char ascii;
cout <<" ";
int z=0;
for(int x=0;
x < length / 8;
x++) {
for(int a=0;
a < 8;
a++) {
binary[a]=(int) input[z] -48;
z++;
}
int power[8];
int counter=7;
for(int x=0;
x < 8;
x++) {
power[x]=counter;
counter--;
}
for(int y=0;
y < 8;
y++) {
double a=binary[y];
asciiNum +=a* pow(2, b);
}
ascii=asciiNum;
asciiNum=0;
cout << ascii;
}
}
这是两条语句,在这两条语句之间需要一个分号
ascii=input[x] char* binary_reverse=new char [9];
比如:
ascii=input[x];
char* binary_reverse=new char [9];
您应该从文件的顶部到底部修复编译错误。早期的错误可能会在以后导致一连串的错误。嗨,阿米尔,我刚刚完成了程序及其运行,但是如果用户没有为二进制输入1或0以外的内容,我希望它显示一条错误消息,然后让该程序提示用户再次输入。所有的帮助都会很好。