用C++中的char *从二进制到十进制到十进制到二进制

用C++中的char *从二进制到十进制到十进制到二进制,c++,binary,char,decimal,C++,Binary,Char,Decimal,更新: char* DecToBin(int n){ char* ptr = new char[]; char* CharReturn = new char[9]; CharReturn[0] = n % 2; CharReturn[1] = n % 3; ptr = CharReturn; return ptr; } 其他的都搞定了,但我不能让这个字符*返回任何实际值。如何为char*指针分配内存。如何实现像x&1,x>>1这样的位函数,以及如

更新:

char* DecToBin(int n){
    char* ptr = new char[];
    char* CharReturn = new char[9];
    CharReturn[0] = n % 2;
    CharReturn[1] = n % 3;
    ptr = CharReturn;
    return ptr;
}
其他的都搞定了,但我不能让这个字符*返回任何实际值。如何为char*指针分配内存。如何实现像x&1,x>>1这样的位函数,以及如何使用x==0,类似于for循环中的参数

原始问题

谢谢你阅读我的问题。我的编程类有一个问题,需要使用char*使用switch语句将二进制转换为十进制,并将十进制转换为二进制。到目前为止,我的代码非常粗糙,根本没有完成。我在理解char*的用法时遇到问题,程序必须使用函数

int BinToDec(char* s);

char* DecToBin(int n); 
我是一个初级程序员,这是我的第三学期,我从来没有用C++编程过。这项作业是为我的CPS260《汇编类编程》而做的。我正在尽我所能,我主要想知道我的工作方向是否正确。我知道查找二进制和十进制的算法很粗糙

代码:

任何输入都将是非常有建设性的,即使它说我是一个可怕的程序员,并且朝着完全错误的方向前进。 提前谢谢你,即使你没有回复


S.S.我用java和Visual Basic编程,C++没有经验,我仍然在使用函数。你必须先申报吗

假设二进制整数的长度不超过8位

打电话给宾托德

char Input[9];
cout << "Please enter the 8-bit binary:\n";
cin >> (Input);
cout << BinToDec(Input);
内脱托宾

unsigned int intInput, Holder;
//char charReturn[7];
//if you make it 7, you can only convert from 0-63
char* ptr;
char* charReturn = new char[9];

cout << "Please Enter the num number you wish to convert to Binary. \n";
cin >> intInput;
Holder = intInput % 2;
charReturn[0] = Holder+'0';
//Holder is 0 or 1, you need to convert it to '0' or '1'
Holder = intInput / 2;
charReturn[1] = Holder % 2+'0';
//...
charReturn[8] = 0; //last character is 0 in char* style string.
ptr = charReturn;
return ptr;

需要使用新的或MALOC创建一个数组,以便在函数返回后将其存储在内存中。

C++上的另一个教程,强制使用char *而不是字符串。哦,天哪。更多的话题,我会尝试写出一些有用的注释:1 C++要求你初始化变量---CARRESURE(7)是一个7字符数组,其中有当前使用的未定义的值。您需要以0\0结尾,因为C样式的字符串char*只是一个由许多字符组成的数组,0表示字符串的结尾。而且它是本地分配的,所以如果您返回指向数组的指针,您将得到垃圾值。您需要对其进行堆分配,查找malloc,new。你还需要分配更多的空间-字符串和char在函数中是相似的,类是用于汇编的,在C++中进行高级编程。如果这对char*的使用更有意义的话。谢谢你的回复。编辑:我将其存储为[7]数组,因为我认为0-7,我们只需要转换8位二进制数。[8]的数组是否更合适,我将研究malloc,new,我为cout 2所做的一切,通常的惯例是尽可能清楚地说明您希望发生什么。您并没有完全做到这一点:与其使用%2和/2,不如使用位操作。因为这基本上就是您正在做的:取最低位x&1,将数字向下移动x>>1,重复此操作,直到消耗整个数字x==0。顺便说一句,您应该使用循环进行dec->bin转换。3 std::cin>>如果没有指向有效、malloc-ed或新的ed内存的给定字符*就无法工作。这应该可以帮助你开始。请注意,这并不是详尽的列表,只是第一眼,我试图让基本原理在没有复杂循环的情况下工作,一旦我弄明白了,我将使用循环,再次感谢您的快速回复和帮助!
int BinToDec(char* BinIn){

    int intOut = 0;
    intOut = intOut + (BinIn[0]-'0') * 128;
    //convert '0' or '1' to 0 or 1.
    intOut = intOut + (BinIn[1]-'0') * 64;
    intOut = intOut + (BinIn[2]-'0') * 32;
    intOut = intOut + (BinIn[3]-'0') * 16;
    intOut = intOut + (BinIn[4]-'0') * 8;
    intOut = intOut + (BinIn[5]-'0') * 4;
    intOut = intOut + (BinIn[6]-'0') * 2;
    intOut = intOut + (BinIn[7]-'0') * 1;
    return intOut;
}
unsigned int intInput, Holder;
//char charReturn[7];
//if you make it 7, you can only convert from 0-63
char* ptr;
char* charReturn = new char[9];

cout << "Please Enter the num number you wish to convert to Binary. \n";
cin >> intInput;
Holder = intInput % 2;
charReturn[0] = Holder+'0';
//Holder is 0 or 1, you need to convert it to '0' or '1'
Holder = intInput / 2;
charReturn[1] = Holder % 2+'0';
//...
charReturn[8] = 0; //last character is 0 in char* style string.
ptr = charReturn;
return ptr;