Based on this code here, konnte ich einen Code schreiben, der einen Vektor von Ganzzahlen in eine Base64-codierte Version konvertiert. Und ich kann bestätigen, dass es die richtige Ausgabe ist, wenn ich mit einer separaten Java-Implementierung vergleiche.C++ 11 Boost, wie Base64 entschlüsseln zurück zu Integer-Präsentation
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <cstdint>
#include <typeinfo>
#include <boost/program_options.hpp>
#include <boost/filesystem.hpp>
#include <boost/archive/iterators/base64_from_binary.hpp>
#include <boost/archive/iterators/binary_from_base64.hpp>
#include <boost/archive/iterators/transform_width.hpp>
#include <boost/archive/iterators/ostream_iterator.hpp>
#include <boost/archive/iterators/remove_whitespace.hpp>
///....
using namespace std;
namespace po = boost::program_options;
namespace fs = boost::filesystem;
namespace bi = boost::archive::iterators;
std::stringstream os;
typedef
bi::base64_from_binary< // convert binary values to base64 characters
bi::transform_width< // retrieve 6 bit integers from a sequence of 32 bit ints
vector<int32_t>::const_iterator,
6,
32
>
>
base64_text;
copy(
base64_text(di.cbegin()),
base64_text(di.cend()),
ostream_iterator<char>(os)
);
cout << os.str() << "\n";
Jetzt versuche ich, den Code zu schreiben, um diese wieder in einen Vektor von ganzen Zahlen zu entschlüsseln, aber dies viel schwieriger erweist. Ich habe versucht, die gegebenen Beispiele in meinen Anwendungsfall zu konvertieren (siehe unten), aber ich bekomme nur einen nicht hilfreichen Fehler beim Kopieraufruf. Frustrierend, alles, was ich finde, Annahme String Eingabe/Ausgabe zu kodieren/zu decodieren. Jede Hilfe wird geschätzt.
typedef
bi::transform_width<
bi::binary_from_base64<bi::remove_whitespace<string::const_iterator>>,
32, 6
>
base64_dec;
vector<int32_t> decoded_ints;
copy(
base64_dec(base64ints.cbegin()),
base64_dec(base64ints.cend()),
decoded_ints.begin()
);
immer bietet komplette, minimal, Arbeiten (Arbeiten nicht in Ihrem Fall) Beispiel kontaktieren – kreuzerkrieg