powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как из char сконвертить в int?
6 сообщений из 6, страница 1 из 1
Как из char сконвертить в int?
    #33194644
Фотография Serega128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, такая проблема,
есть: char c[8];
он содержит: 10010011
так вот, мне нужно как-то сконвертить этот массив в int, чтобы получилось 147(т.е. 10010011 в двоичной)?
...
Рейтинг: 0 / 0
Как из char сконвертить в int?
    #33194682
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. sscanf() или классы istringstream/ostringstream
...
Рейтинг: 0 / 0
Как из char сконвертить в int?
    #33194691
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
   char c[9]="10010011";
   printf("%d\n",strtol(c,0,2));                                                 
}
...
Рейтинг: 0 / 0
Как из char сконвертить в int?
    #33195427
Monoceros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
когда я учился в 9-м классе, подобные вещи я делал примерно так:
Код: plaintext
1.
2.
3.
4.
5.
int i; //счетчик
int res =  0 ; //результат
for (i= 1 ; i<= 8 ; i++) {
 res += power( 2 , ( 8 -i))*c[i- 1 ]
}
ну а power это функция вычисления степени числа. мое математическое образование говорит, что можно считать так: N^x = exp(x*ln(N)). думаю это уже не проблема записать на си, только результат дает вещественный

(С под рукой нету, так что абсолютную правильность не гарантирую, но ведь главное идея)
...
Рейтинг: 0 / 0
Как из char сконвертить в int?
    #33195904
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monocerosкогда я учился в 9-м классе, подобные вещи я делал примерно так:
...
(С под рукой нету, так что абсолютную правильность не гарантирую, но ведь главное идея)

Можно, конеш, ехать в Швецию через Грецию, но зачем? Есть функция strtol которая делает то, что требуется.

Если религия запрещает ее использовать, то можно написать свое преобразование. Но стоит ли тогда в цикл пихать умножение и вызов прожорливой библиотечной pow? Можно (и нужно) обойтись обычным сдвигом и сложением. Тоже 2 строчки, но быстрей на порядок. Ниже пример. Правда также, как и твой вариант, криво работает, если строка содержит символы отличные от 0 и 1, и не проверяет валидность переданного указателя :)

Код: plaintext
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.
47.
48.
49.
50.
51.
52.
#include <iostream> 
#include <math.h>
#include <windows.h>

using namespace std;

int f(const char *c)
{
	int i; 
	int res =  0 ; 
	for (i= 1 ; i<= 8 ; i++) {
		res += pow( 2 , ( 8 -i))* (c[i- 1 ] - '0');
	}
	return res;
}

int f1(const char *c)
{
	int r =  0 ;
	for(; *c ; c++)
	{
		r <<=  1 ;
		r += (*c == '0') ?  0  :  1 ;
	}
	return r;
}

void Test(const char *c, int N)
{
	DWORD dw = GetTickCount();
	for(int i =  0 ; i < N; i++)
		f(c);
	cout << "power and mul conversion " << (GetTickCount() - dw) << " msec \n";

	dw = GetTickCount();
	for(int i =  0 ; i < N; i++)
		f1(c);
	cout << "shift and add conversion " << (GetTickCount() - dw) << " msec \n";

	dw = GetTickCount();
	for(int i =  0 ; i < N; i++)
		strtol(c,  0 ,  2 );
	cout << "strtol conversion " << (GetTickCount() - dw) << " msec \n";
}

int main(int argc, char *argv[])
{
	char c[ 9 ] = "10001010";
	Test(c,  1000000 );
	return  0 ;
}

...
Рейтинг: 0 / 0
Как из char сконвертить в int?
    #33195944
Monoceros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2redskin
смотря откуда ехать
вообще автору нужно было именно "как-то" вот я и предложил такой вариант
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как из char сконвертить в int?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]