Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2011, 17:50   #1
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию гонять символы в разные системы счисления

такая проблема.
дан текст из символов. допустим обычный char массив. его нужно зашифровать следующим образом. генерируем строку символов такой же длины что и массив символов. и посимвольно их складываем. собственно это не проблема. проблема в от в чем. нужно чтобы была возможность просмотра символьного в двоичной и шестнадцатеричной кодировке. ну то есть если текст например был такой:
111
то его вид в двоичной системе (код единицы 49): 110001 110001 110001, а в шестнадцатеричной 31.
как это сделать? может функции какие есть?
Kukurudza вне форума Ответить с цитированием
Старый 03.09.2011, 18:08   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

С шестнадцатеричной можно устроить, а с двоичной придется ручками. Иллюстрация:
Код:
#include <iostream>

using namespace std;


char* transf_bin(unsigned char byte)
{
	static char _res[9];

	int i = 0;
	_res[8] = '\0';
	if(!byte)
		return &(_res[7] = '0');

	for(i = 7; i >= 0 && byte; i--, byte >>= 1)
		_res[i] = byte % 2 + '0';
	return _res + i + 1;
}


int main()
{
	const char* const str = "123111";

	for(const char *pch = str; *pch; pch++)
		cout << transf_bin(*pch) << " ";
	cout << endl;

	cout << hex; // set hexadecimal base
	for(const char *pch = str; *pch; pch++)
		cout << (unsigned)*pch << " ";
	cout << endl;

	return 0;
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 03.09.2011, 20:27   #3
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

сделал. а как к каждому символу строки применить операцию xor?
то есть например имею 10101110 и 11010110 то в итоге применения получу 01111000.
и как вообще символ привести к бинарному виду? 100500 есть какие то функции. че велосипед изобретать
Kukurudza вне форума Ответить с цитированием
Старый 03.09.2011, 21:48   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
есть какие то функции.
Насколько я знаю, в стандарте нет. Если это устраивает, можете почитать itoa.
Цитата:
а как к каждому символу строки применить операцию xor?
Ручками. Можно использовать transform.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системы счисления monogramm Помощь студентам 11 20.04.2011 14:25
Системы счисления.10->5-7. Corpinccom Помощь студентам 0 22.09.2010 12:54
С++ перевод чисел в разные системы исчисления Anty_F[R]eez Помощь студентам 2 09.06.2010 15:23
Перевод в разные системы счисления Наташенька Общие вопросы C/C++ 2 21.12.2008 11:34
Перевод числа в разные системы счисления Сергий Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 04.12.2008 21:15