Короткая версия:
У меня есть строка: 0x4D;0x90;0x69
Я хочу массив
static const uint8_t array[] = {
0x4D, 0x90, 0x69
}
Как это сделать?
1011 *
Более длинная версия:
У меня есть строка (buffer
) со следующим: 0x4D0x900x69
между этими шестнадцатеричными "числами" находятся пробелы нулевой ширины, и я разделил их на вектор строк, используя
std::vector<std::string> v{ explode(buffer, '\u200B') };
Я хочу, чтобы вектор содержал данные uint8_t
.
Я уже пытался переосмыслить строку, и это действительно сработало. Но я поместил его в цикличный цикл, и он должен выдвинуть результат в uint8_t
Vector, но в Vector было только 0x00
.
std::vector < std::string > v {
explode(buffer, '\u200B')
};
std::vector < uint8_t * > ob;
for (auto n: v) {
uint8_t * p = reinterpret_cast < uint8_t * > ( & n);
//std::cout << n << " | " << p << std::endl;
ob.push_back(p);
};
for (auto na : ob) std::cout << na << std::endl;
Я получаю только три 0x00 в консоли.
Я хочу, чтобы static const uint8_t arr[]
содержал buffer
, разделенный на части.
Edit:
Я забыл добавить функцию explode
здесь, в основном это просто разделение. `` `Каст
const std::vector<std::string> explode(const std::string& s, const char& c)
{
std::string buff{ "" };
std::vector<std::string> v;
for (auto n : s)
{
if (n != c) buff += n; else
if (n == c && buff != "") { v.push_back(buff); buff = ""; }
}
if (buff != "") v.push_back(buff);
return v;
}