Перевод MAC адреса из string в u_char[]

167
25 мая 2018, 06:50

Подскажите как правильно перевести строку string с MAC адресом имеющую формат:

FF:FF:FF:FF:FF:FF

в массив типа

u_char mac[6] = {"0xFF", "0xFF", "0xFF", "0xFF", "0xFF", "0xFF"};
Answer 1

есть много-много способов. Если формат макадреса только такой (а это легко проверить по длине и наличию двоеточий, то все просто

for (int i = 0; i < 6; i++) {
  mac[i] = std::stoi(addr.substr(i*3,2), nullptr, 16);
}

Второй способ - через scanf - пример на SO.

И мой любимый способ

#include <iostream>
using namespace std;
std::string ReplaceAll(std::string str, const std::string& from, const std::string& to) {
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length(); // Handles case where 'to' is a substring of 'from'
    }
    return str;
}
int main() {
    std::string mac = "FF:FF:FF:FF:FF:FF";
    std::string r = "u_char mac[6] = {\"" + ReplaceAll(mac, ":", "\", \"0x") + "\"};";
    cout << r << endl;
    return 0;
}

и потом через компилятор прогнать:)

READ ALSO
Как добавить маршалинг строки в функцию библиотеки, которая добавлена через reference?

Как добавить маршалинг строки в функцию библиотеки, которая добавлена через reference?

У меня подключена библиотека (неуправляемая) через reference

180
Медиа запросы bootstrap4 для sass

Медиа запросы bootstrap4 для sass

Помогите разобраться в медиа запросахЧитаю инструкцию на этой страничке:

224
В чем моя ошибка при работе с объектами?

В чем моя ошибка при работе с объектами?

Когда вызываю объект, то значения не выводятсяМожет синтаксическая ошибка?

172
Проверить соседние элементы массива

Проверить соседние элементы массива

помогите советом, как найти соседние элементы по горизонтали и вертикалиК примеру: findClaster(8, 3) равно 2

189