Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как из char сконвертить в int? / 6 сообщений из 6, страница 1 из 1
01.08.2005, 15:43
    #33194644
Serega128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из char сконвертить в int?
Народ, такая проблема,
есть: char c[8];
он содержит: 10010011
так вот, мне нужно как-то сконвертить этот массив в int, чтобы получилось 147(т.е. 10010011 в двоичной)?
...
Рейтинг: 0 / 0
01.08.2005, 15:57
    #33194682
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из char сконвертить в int?
см. sscanf() или классы istringstream/ostringstream
...
Рейтинг: 0 / 0
01.08.2005, 15:59
    #33194691
sanek842
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из char сконвертить в int?
Код: 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
02.08.2005, 05:26
    #33195427
Monoceros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из char сконвертить в int?
когда я учился в 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
02.08.2005, 11:16
    #33195904
redskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из char сконвертить в int?
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
02.08.2005, 11:27
    #33195944
Monoceros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из char сконвертить в int?
2redskin
смотря откуда ехать
вообще автору нужно было именно "как-то" вот я и предложил такой вариант
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как из char сконвертить в int? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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