2016-04-20 3 views
1

Я пишу программу, которая принимает числа, введенные пользователем, и сохраняет их в массив. Затем программа преобразует значения в десятичные числа и сохранит их в новом массиве. У меня возникла проблема с преобразованием двоичного значения в правильный размер бита.Преобразование десятичного в двоичный в C++ с правильным размером бита

Например, пользователь вводит 3 и 4. Моя программа хранит и преобразует их в двоичные, что приводит к 11 и 100. Как я могу получить его для хранения 011 и 100?

Я считаю, что мне нужно будет преобразовать в массив символов или какую-то строку, но я не знаю, какие шаги я должен выполнить.

+4

Вы можете использовать std :: string binary = std :: bitset <8> (num) .to_string(); здесь 8 представляет собой длину двоичного кода, который вам нужен, а num - это число, переданное пользователем. –

+2

Вы даете правильный результат, если 3 равно 11, оно все равно совпадает с 011, поэтому я не вижу смысла делать это. Подумайте об этом, так как ваша проблема заключается в том, что вы никогда не знаете, как высокий тип пользователя и сколько нулей вы хотите добавить. Чтобы завершить то, что вы хотите сделать, бессмысленно. – FieryCod

+0

Если вы не используете 3-битное поле бит, вы не можете хранить только три бита, и даже если вы все еще сохраняете в двоичном формате, где '11' ==' 011'. Ваш вопрос не имеет смысла. – EJP

ответ

0

Я думаю, что вы пытаетесь сделать, это:

void Convert(int Number, char *Array, int Bits) { 
    int Bit; 

    for (Bit = 0; Bit < Bits; Bit++) { 
     if ((Number & (1 << (Bits - (Bit + 1)))) > 0) { 
     Array[Bit] = '1'; 
     } else { 
     Array[Bit] = '0'; 
     } 
    } 
} 
0

я сделал почти то же самое, как указано ниже:

Вы можете попробовать это.

//Decimal to Binary 
char* dTb(int num, unsigned bit) 
{ 
    char *binStr = new char (bit + 1); 
    int len = bit; 

    binStr[bit] = '\0'; 
    while (bit--) binStr[bit] = '0'; 

    if (num == 0) 
     return binStr; 

    int r; 
    while (num && len) 
    { 
     r = num % 2; 
     binStr[--len] = r + '0'; 
     num /= 2; 
    } 

    return binStr; 
} 

Спасибо !!!

+1

Вы не имеете в виду 'char * binStr = new char [bit + 1];'? – Entropy

+0

Да, точно. Я изменил его соответствующим образом. Благодаря!!! –

Смежные вопросы