2017-02-25 7 views
-3

Ich bin sehr neu in C++ und möchte eine char* von einer std::string zu einer byte* zu werfen.Wie wird ein char * in ein Byte * in C++ umgewandelt?

Hier ist mein Code:

In g++, der Ausgang ist:

AESXCBC128.cpp: In function ‘std::string CryptoPP::XOR(const string&, const string&)’: 
AESXCBC128.cpp:79:48: error: invalid conversion from ‘char*’ to ‘byte* {aka unsigned char*}’ [-fpermissive] 
    xorbuf(&retval[0], &key[0], retval.length()); 
               ^
AESXCBC128.cpp:45:6: error: initializing argument 1 of ‘void CryptoPP::xorbuf(byte*, const byte*, size_t)’ [-fpermissive] 
void xorbuf(byte *buf, const byte *mask, size_t count) 
    ^
AESXCBC128.cpp:79:48: error: invalid conversion from ‘const char*’ to ‘const byte* {aka const unsigned char*}’ [-fpermissive] 
    xorbuf(&retval[0], &key[0], retval.length()); 
               ^
AESXCBC128.cpp:45:6: error: initializing argument 2 of ‘void CryptoPP::xorbuf(byte*, const byte*, size_t)’ [-fpermissive] 
void xorbuf(byte *buf, const byte *mask, size_t count) 
+0

ein Zeichen ist kein String in C++ – user

+0

Es scheint, wie Sie Nicht-Standard verwenden C++, oder Sie haben einen Java-Code kopiert. C++ hat nicht den Typ 'byte',' word32' oder 'word64'. –

+1

@DannyuNDos - Ich wette, sie sind nur Typdefs, was Teil des Standards ist. Das wirkliche Problem hier ist, dass "Byte" ist "unsigned char" und die Strings enthalten "char", ein anderer Typ. Der Compiler sagt auch, dass das Hinzufügen einer Option "-fpermissive" den Fehler ignorieren wird. Könnte eine vorübergehende Lösung sein. –

Antwort

0

Crypto ++ :

typedef unsigned char byte; 

Sie so etwas wie verwenden:

CryptoPP::xorbuf(
    reinterpret_cast<byte*>(&retval[0]), 
    reinterpret_cast<const byte*>(&key[0]), 
    retval.length()); 

Oder Sie es mit C-Stil tun wirft:

CryptoPP::xorbuf((byte*)&retval[0], (const byte*)&key[0], retval.length()); 

Hier sind einige ähnliche Fragen für SecByteBlock, die ein Byte Array anstelle eines Char-Arrays:

Hier sind einige Referenzen auf C++ Casting:

+0

danke für Hilfe ... –

+0

@ T.Rifle - Vielleicht sollten Sie [einige Suchergebnisse] (https://www.google.com/search?q=c%2B%2B+for+anfängern) zur Kasse gehen zukünftige Fragen. Stack Overflow ist nicht das einfachste Forum für Neulinge in einer Sprache. Es ist ein bekanntes Problem mit Stack Overflow. Siehe auch [Könnten wir bitte etwas netter für neue Benutzer sein?] (Http://meta.stackexchange.com/questions/9953/could-we-please-be-a-bit-nicer-to-near-users) . – jww

Verwandte Themen