Подскажите как правильно перевести строку string с MAC адресом имеющую формат:
FF:FF:FF:FF:FF:FF
в массив типа
u_char mac[6] = {"0xFF", "0xFF", "0xFF", "0xFF", "0xFF", "0xFF"};
есть много-много способов. Если формат макадреса только такой (а это легко проверить по длине и наличию двоеточий, то все просто
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;
}
и потом через компилятор прогнать:)
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости