Я с помощью gcrypt STRUCT gcry_sexp_t (https://fossies.org/dox/libgcrypt-1.6.3/structgcry__sexp.html), которые я определяю как ЬурейеГо gcry_sexp_t Blob.Преобразовать Строку Структуры (байты)
Я получаю строку, как показано 0069c570 и преобразовать его в Blob (0x69c570)
- Преобразования строку в HEX
- Места шестнадцатеричной строки в вектор
- Попытки Преобразовать в Blob (тетср, векторный итератор, литье)
Попытки использовать memcpy, iterators или cast не работали. Кто-нибудь знает, как выполнить эту задачу?
// Convert to Hex String
std::stringstream vstream;
vstream << std::hex << std::setw(2) << std::setfill('0');
for (size_t i = 0; size > i; ++i) {
vstream << static_cast<unsigned int>(static_cast<unsigned char>(value[i]));
}
std::string valuestr = vstream.str();
valuestr.replace(0, 2, "0x");
// Place into std::vector
std::transform(valuestr.begin(), valuestr.end(), valuestr.begin(), ::tolower);
std::vector<char> bytes(valuestr.begin(), valuestr.end());
bytes.push_back('\0');
char *rcvdblob = (char *)&bytes[0];
// Attempt to convert to Blob
Blob rcvdpayload;
memcpy(&rcvdpayload, &bytes[0], sizeof(rcvdpayload));
for (std::vector<char>::iterator it = bytes.begin(); it != bytes.end(); ++it) {
std::cout << *it;
}
std::cout << std::endl;
rcvdpayload = *reinterpret_cast<Blob*>(rcvdblob);
Если возникла проблема, которая может быть решена более четко, лаконично и быстрее в C, чем C++, для нее это ребенок-плакат. –