Форум программистов, компьютерный форум CyberForum.ru

Число int в десятичной преобразовать в char - двоичной - C++

Восстановить пароль Регистрация
 
 
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 11:44     Число int в десятичной преобразовать в char - двоичной #1
Помогите пожалуйста. Ситуация похожа, код прилагается - нужно число int в десятичной преобразовать в char - двоичной, совсем запутался в указателях. В итоге в _result выводится абракадабра, пробовал и itoa и sprintf.
C++
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
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <string.h>
using namespace std;
 
void NumberAsBinary(
    char* _result,
    unsigned int _number
    )
{
    cout << _number << '\n';
    int _ost[10];
    int _n=0;
    do 
    {
        _ost[_n]=_number%2;
        _n++;
        _number/=2;
    }
    while (_number!=0);
    for (int _i=_n-1;_i>=0;_i--) 
    {
        *_result+=(char)&_ost[_i];
        cout << _ost[_i];
    }
    cout << _result;
    cout << '\n';
    /*  for (;*_result != '\0';*_result--)
      cout  << _result << '\n';*/
    
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    char _result;
    srand(time(0));
    unsigned int _number;
    for (int _i=10;_i>0;_i--) 
    {
        _number=rand()%512;
        NumberAsBinary(&_result,_number);
    }
    system("pause");
    return 0;
}
Добавлено через 20 часов 32 минуты
Через это
*_result+=(char)&_ost[_i];
что-то присваивает, но опять же абракадабра выходит..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 12:20     Число int в десятичной преобразовать в char - двоичной #2
Если не надо сугубо ручное преобразование, то рекомендую std::bitset
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 12:30  [ТС]     Число int в десятичной преобразовать в char - двоичной #3
Tulosba, можно применимо к коду, если не сложно?
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 12:32     Число int в десятичной преобразовать в char - двоичной #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <bitset>
 
int main() {
        
    const int i = 123;
    std::bitset<16> b( i );
    
    std::cout << i << " : " << b << std::endl;
    
        return 0;
}
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
17.07.2013, 13:15     Число int в десятичной преобразовать в char - двоичной #5
Intriguer, я хочу узнать - в чём фишка подчеркиваний перед названиями переменных? Что это означает?
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 13:18  [ТС]     Число int в десятичной преобразовать в char - двоичной #6
soican, такое требование к коду, я не знаю, правда
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
17.07.2013, 13:24     Число int в десятичной преобразовать в char - двоичной #7
Цитата Сообщение от Intriguer Посмотреть сообщение
soican, такое требование к коду, я не знаю, правда
понял. а ещё скажи
Цитата Сообщение от Intriguer Посмотреть сообщение
нужно число int в десятичной преобразовать в char - двоичной
эту фразу как-то не понимаю. Char же это тот же int только каждый его символ обладает своим кодом(цифровым).
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 13:24     Число int в десятичной преобразовать в char - двоичной #8
Цитата Сообщение от Intriguer Посмотреть сообщение
такое требование к коду
Просто кто-то сошел с ума. Предлагаю еще константы добавить:
C++
1
2
const int _10 = 10;
const int _0 = 0; // и т.д.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
17.07.2013, 13:25     Число int в десятичной преобразовать в char - двоичной #9
Цитата Сообщение от Intriguer Посмотреть сообщение
soican, такое требование к коду, я не знаю, правда
По мне так требование бредовое. Особенно учитывая, что подчёркивания активно применяются во всяких библиотечных макросах(дефайнах) либо иногда в
именах функций и тайпдефов, то можно получить совершенно непредсказуемые ошибки компилятора при пересечении этих имён.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 13:29     Число int в десятичной преобразовать в char - двоичной #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
можно получить совершенно непредсказуемые ошибки компилятора при пересечении этих имён.
В стандарте сказано про идентификаторы с двойным подчеркиванием, а также про подчеркивание и последующую заглавную букву. Так же есть про идентификаторы с одним подчеркиванием на глобальном уровне. Поэтому, если используется локально, то никаких казусов быть не должно.
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 13:33  [ТС]     Число int в десятичной преобразовать в char - двоичной #11
Tulosba, а если как у меня - значение, которое нужно поместить в char - находится в масиве int?
Цитата Сообщение от Intriguer Посмотреть сообщение
for (int _i=_n-1;_i>=0;_i--) { *_result+=(char)&_ost[_i]; cout << _ost[_i];
вот конкретно здесь можно как-то перевести, дабы не менять весь алгоритм перевода числа? хотелось бы просто занести значение в указатель и вывести его на результат функции...
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 13:38     Число int в десятичной преобразовать в char - двоичной #12
Цитата Сообщение от Intriguer Посмотреть сообщение
нужно число int в десятичной преобразовать в char - двоичной
Intriguer, расшифруйте это. А то складывается впечатление, что ничего не понятно
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 13:38  [ТС]     Число int в десятичной преобразовать в char - двоичной #13
Tulosba, Например, для числа 13 данная функция должна вернуть строку "1101".
у меня на данном этапе значение 1101 для числа 13 записывается в масиве ost[i], а должно в строку result
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 13:43     Число int в десятичной преобразовать в char - двоичной #14
Intriguer, так вариант со стандартными функциями устроит или надо свой алгоритм замутить?
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 13:45  [ТС]     Число int в десятичной преобразовать в char - двоичной #15
Tulosba, устроит вот на этом этапе
C++
1
for (int _i=_n-1;_i>=0;_i--) { *_result+=(char)&_ost[_i]; cout << _ost[_i];
- перевод числа в строку можно - тоесть если будет уже перевод масива результата в строку, главное, что алгоритм преобразования десятичного в двоичный не функциями реализован - это было основное задание, я просто не могу подобрать эту функцию - не получилось разобраться - atoi, sprintf пробовал
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
17.07.2013, 13:49     Число int в десятичной преобразовать в char - двоичной #16
Цитата Сообщение от Tulosba Посмотреть сообщение
вариант со стандартными функциями устроит
Цитата Сообщение от Intriguer Посмотреть сообщение
Tulosba, устроит
Цитата Сообщение от Intriguer Посмотреть сообщение
главное, что алгоритм преобразования десятичного в двоичный не функциями реализован
блин что то не понятно, а вообще std::bitset уже раньше написали про него
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 13:49     Число int в десятичной преобразовать в char - двоичной #17
Intriguer, могу предложить еще тут посмотреть Перевод из 10-чной в 2-чную систему счисление
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 13:56  [ТС]     Число int в десятичной преобразовать в char - двоичной #18
Tulosba, я так понял std::bitset переводит числа автоматически, по ссылке тоже уже готовое решение, у меня алгоритм перевода свой - осталась только задача из масива, в который я результат записываю в формате последовательности элементов целых чисел сделать строку, которую функция и выдаст на выходе, вот я конкретно здесь что-то пытался - но на выходе получается абракадабра
C++
1
 *_result+=(char)&_ost[_i]
тоесть в принципе тему наверное нужно было назвать - как массив int преобразовать в строку char...
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.07.2013, 14:13     Число int в десятичной преобразовать в char - двоичной #19
Intriguer, разбирайтесь:
Кликните здесь для просмотра всего текста
C++
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
#include <iostream>
#include <ctime>
#include <cstring>
#include <cstdlib>
 
void NumberAsBinary(
    char* result,
    unsigned int number
    )
{
    std::cout << number << '\n';
    int ost[10];
    int n=0;
    do 
    {
        ost[n++]=number%2;
        number/=2;
    }
    while (number);
    char *r = result;
    for (int i=n-1;i>=0;i--) 
    {
        *r++ = ost[i] ? '1' : '0';
        // std::cout << ost[i];
    }
    *r = 0;
    std::cout << result << std::endl;
};
 
int main()
{
    char result[20];
    srand(time(0));
    unsigned int number;
    for (int i=10;i>0;i--) 
    {
        number=rand()%512;
        NumberAsBinary(result,number);
    } 
 
//  NumberAsBinary( result, 13 );
    std::system("pause");
    return 0;
}


Код жуткий. Но зато в Вашем стиле
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2013, 14:50     Число int в десятичной преобразовать в char - двоичной
Еще ссылки по теме:

C++ Преобразовать число int в строку прописью char
C++ Как преобразовать int в char
C++ Как преобразовать строку char в массив int?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Intriguer
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 12
17.07.2013, 14:50  [ТС]     Число int в десятичной преобразовать в char - двоичной #20
Tulosba,
C++
1
2
3
4
//char* r=_result;
    for (int i=n-1;i>=0;i--) 
        *_result++ = ost[i] ? '1' : '0';
    *_result=0;
так тоже работает
помогите еще понять полностью логику - *_result++ = ost[i] ? '1' : '0' - здесь я так понимаю идет сдвиг по яцейкам памяти *_result++ и запись в них значения массива, а что дает условие 1 или 0 - без него как раз и выходила неразбериха с кодировкой...?
Yandex
Объявления
17.07.2013, 14:50     Число int в десятичной преобразовать в char - двоичной
Ответ Создать тему
Опции темы

Текущее время: 05:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru