C ++从二进制到十进制的简单转换

时间:2014-12-31 08:16:40

标签: c++ logic

我试图创建一个从十进制转换为二进制的程序,但我遇到了麻烦。看看我有什么,并给我一个正确的方向,程序编译但返回负数。我正在调试,但是一旦编译器点击num变量,它就会弹出一个负数。

#include <iostream>
using namespace std;

int hexConvert(int* num, int Hexes[8]) {
    //int* Hexes[8] = &Hexes[8];
    int empty[8];
    for(int i = 0; i < 8; i++) {
        if(Hexes[i]-*num >= 0) {
            *num = (Hexes[i] - *num);
            empty[i] = 1;
        } else
            empty[i] = 0;
    }
    return empty[8];
}

int Hexes[8] = {128,64,32,16,8,4,2,1};

int main() {
    int num = 0;
    int here[8];
    here[8] = hexConvert(&num,&Hexes[8]);
    for (int i = 0; i < 8; i++)
        cout << here[i];
}

3 个答案:

答案 0 :(得分:1)

中,您可以复制结构,联合等,但不能直接复制数组。由于这个原因,您无法返回数组并将其分配给另一个数组。

您可以使用somearr[8]std::array代替std::vector。可以复制这些stl容器,从而解决您的问题。

Live Demo here

答案 1 :(得分:1)

你做错了什么。

1-我想你想为每个十进制数字保存数组中的二进制文件。如果要执行此操作,则必须使用2d数组。 (例如小数:[2,4,7]二进制文件:[[0,1,0],[1,0,0],[1,1,1])

2-你以错误的方式使用数组。如果要将数组发送到函数,则必须使用:

// lets say this is a function takes an array
void foo(int ex[8]);
.
.
.
int main() {
int myArray[8];
.
.
//you must call it like that
foo(myArray);
//or
foo(&myArray[0]);

3-你要返回一个int而不是int []。也许你想在你的函数中使用输出参数,这可能有所帮助。

您必须在C ++中搜索和学习数组使用情况。访问http://www.cplusplus.com/doc/tutorial/arrays/

答案 2 :(得分:0)

您正在将函数传递给数组外部的指针。此外,您将从数组中返回一个元素。包含8个元素的数组的索引从0到7.此外,您不能将数组作为函数参数传递。 阅读关于C ++的教程,然后再试一次