neuer Variablentyp

Martin Schroeder

Erfahrenes Mitglied
hallo!
Ich habe ein kleines Problem: Ich möchte mal eine Verschlüsselungssoftware nachprogrammieren und die arbeitet mit sehr großen zahlen, egal wie ich es mache.
deshalb brauche ich einen variablentyp der viel größer als long(4bit) ist.
Wie mache ich das?
 
also bei vsc++ gibts __int64 der ist 8 byte lang und hat damit mit quadratisch soviele möglichkeiten
ansonsten könntest du dir selber einen schreiben (vl weiss ja jemand anderes noch ne andere möglichkeit)
musst du denn damit rechnen können, oder reicht es, ihn als binäres array zu bearbeiten?
 
mit typedef kannst du nur neue namen für einen bereits vorhandenen typ definieren.
wenn du einen typ haben willst, der grösser als 8 byte ist, mit dem du rechnen kannst, musst du dir schon etwas eigenes schreiben (für addition und subtraktion sollte das nicht allzu schwer sein).
allerdings brauchst du zum verschlüsseln normal nicht über grössen von 4 byte raus zu rechnen.
du kannst doch einfach in 4 oder 1 byte abschnitten behandeln.
 
Na ja.
Also das ist das Zweischlüsselverfahren und dabei wird halt zweimal potenziert.
Einmal beim verschlüsseln und einmal beim entschlüsseln.(Beim Verschlüsseln kommt etwas zwischen 0 und 100 oder so raus und dann wird beim entschlüsseln etwas wie 119 damit potenziert)
 
Dann würde ich vorschagen du schreibst dir einen neuen Variablentyp.

mal ein Grundgerüst:

Code:
//sstring.h

class sstring
{
public:
	sstring(void);
	~sstring(void);

	sstring& operator=(const char*);  //Zuweisen von char* strings
	sstring& operator+=(const char*); //anhängen von char* strings
	sstring& substr(int, int); //Teilstring zurückgeben
	
	int length();

	char LastChar();

	char* c_str(); //ein char* string zurückgeben
private:
	char * m_string;
};
Code:
//sstring.cpp

sstring::sstring(void)
{
	m_string = NULL;
}

sstring::~sstring(void)
{
}

sstring& sstring::operator=(const char* rsh)
{
	if(m_string)
		delete[] m_string;
	m_string=0;
	m_string = new char[strlen(rsh) + 1];
	strcpy(m_string, rsh);
	return *this;
}

sstring& sstring::operator+=(const char* rsh)
{
	char* m_tmp;
	m_tmp = new char[strlen(m_string) + strlen(rsh) + 1];
	strcpy(m_tmp, m_string);
	strcat(m_tmp, rsh);
	delete[] m_string;
	m_string = m_tmp;
	return *this;
}

sstring& sstring::substr(int start, int end)
{
	char * m_tmp;
	m_tmp = new char[end - start + 1];
	for(int i = 0; i<(end - start);i++)
	{
		m_tmp[i] =  m_string[start + i];
		m_tmp[i+1] = 0;
	}
	sstring * retString;
	retString = new sstring;
	*retString = m_tmp;
	delete[] m_tmp;
	return *retString;
}

int sstring::length()
{
	return (int)strlen(m_string);
}

char* sstring::c_str()
{
	return m_string;
}

char sstring::LastChar()
{
	return this->substr(this->length() - 1, this->length()).c_str()[0];
}
 
Wieso schreibst du mir eine Klasse für Strings?:confused:
Ich brauche doch Zahlen.

Aber das Problem hat sich sowiso schon erledigt.
Ich habe eine Klasse gefunden, die sehr brauchbar ist.
 

Neue Beiträge

Zurück