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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2015, 01:14   #1
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию StringToHex и обратно

Всем привет. Задача такая, нужно перевести строку в hex и обратно )

Код:
AnsiString StringToHex(String Text) {
	AnsiString HexString;
	for(int i = 1; i <= Text.Length(); ++i)
		HexString += IntToHex(Text[i], 2);
	return HexString;
}
Но вот как махнуть обратно, не могу сообразить
-Jack- вне форума Ответить с цитированием
Старый 29.09.2015, 06:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
AnsiString HexToString(String Text) {
	AnsiString OkString;
	for(int i = 1; i <= Text.Length(); i+=2)
		OkString+= StrToInt("$"+copy(Text[i],i,2));
	return OkString;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2015, 06:36   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

делфин понимает такое IntToStr(StrToInt('$1F')). бюлдеру почему бы не понять?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.09.2015, 13:15   #4
Gsec
Новичок
Джуниор
 
Регистрация: 29.09.2015
Сообщений: 1
По умолчанию

Код:
#include <iostream>
#include <sstream>
int main()
{
	std::stringstream ss;
	std::string str;
	int number;

	str = "64"; //Decimal String
	std::stringstream(str) >> std::dec >> number;

	ss << std::hex << number;
	str = ss.str();
	std::cout << "hex: " << str << std::endl;

	ss.str("");
	ss << std::dec << number;
	str = ss.str();
	std::cout << "dec: " << str << std::endl;

	ss.str("");
	ss << std::oct << number;
	str = ss.str();
	std::cout << "oct: " << str << std::endl;

	std::system("PAUSE");
	return 0;
}

Последний раз редактировалось Gsec; 29.09.2015 в 15:09.
Gsec вне форума Ответить с цитированием
Старый 30.09.2015, 00:25   #5
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Не могу понять в чем подвох ...
HEX.h

Код:
//-----------------------------------------------------------------------------
#ifndef HEXH
#define HEXH
//-----------------------------------------------------------------------------
#include <string>
#include <iostream.h>
//-----------------------------------------------------------------------------
AnsiString StringToHex(String Text) {
	AnsiString HexString;
	for(int i = 1; i <= Text.Length(); ++i)
		HexString += IntToHex(Text[i], 2);
	return HexString;
}

AnsiString HexToString(String Text) {
	AnsiString OkString;
	for(int i = 1; i <= Text.Length(); i+=2){
		OkString+= StrToInt("$"+std::copy(Text[i],i,2));
	}
	return OkString;
}
#endif
Получаю ошибку

Цитата:
[bcc32 Error] HEX.h(19): E2285 Could not find a match for 'copy<_InIt,_OutIt>(wchar_t,int,int )'
И обратил внимание, если в строчке присутствуют русские буквы, то функция, которую я привел в первом посте выдает неверные значения ...

Последний раз редактировалось -Jack-; 30.09.2015 в 02:03.
-Jack- вне форума Ответить с цитированием
Старый 30.09.2015, 05:40   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

а где вы видели std:: во втором посте?
p51x вне форума Ответить с цитированием
Старый 30.09.2015, 09:09   #7
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
а где вы видели std:: во втором посте?
пробовал и с std и без ... в любом случаи ошибка
-Jack- вне форума Ответить с цитированием
Старый 30.09.2015, 09:28   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так заинклюдьте Билдеровский SysUtils или где там Copy находится.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.09.2015, 21:09   #9
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Чет как то сложно тут у вас.
Код:
 System::UnicodeString __fastcall IntToHex(int Value, int Digits)/* overload */;
уже возвращает строку.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 30.09.2015, 22:27   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Людям хочется своих велосипедов... в стд тоже есть готовое.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вернуть обратно Алекссс Общие вопросы Delphi 1 30.09.2012 23:49
txt в бинарник и обратно cowboy Общие вопросы Delphi 9 16.09.2009 10:54
Из бд и обратно Kelevro PHP 1 11.09.2009 15:22
как перевести из integer в real(и обратно), и из real в string(и обратно) Ga-sergey Общие вопросы Delphi 2 08.06.2007 21:13