Среда, 02 Декабря 2020 г. 16:04
+ в цитатник
Qraizer: Чётъмолчат все. Вот, влобное:
std::ostringstream buf;
buf.setf(std::ios::hex, std::ios::basefield);
buf.setf(std::ios::uppercase);
buf.fill('0');
buf.width(2); buf << pAdapterInfo->Address[0] << '-';
buf.width(2); buf << pAdapterInfo->Address[1] << '-';
buf.width(2); buf << pAdapterInfo->Address[2] << '-';
buf.width(2); buf << pAdapterInfo->Address[3] << '-';
buf.width(2); buf << pAdapterInfo->Address[4] << '-';
buf.width(2); buf << pAdapterInfo->Address[5];
std::string mac_addr = buf.str();
Вот в один оператор:
std::string mac_addr = static_cast(
std::ostringstream() << std::hex << std::setfill('0') << std::uppercase
<< std::setw(2) << pAdapterInfo->Address[0] << '-'
<< std::setw(2) << pAdapterInfo->Address[1] << '-'
<< std::setw(2) << pAdapterInfo->Address[2] << '-'
<< std::setw(2) << pAdapterInfo->Address[3] << '-'
<< std::setw(2) << pAdapterInfo->Address[4] << '-'
<< std::setw(2) << pAdapterInfo->Address[5]
).str();
Если вдруг pAdapterInfo->Address имеет неподходящий тип, то нужен ещё каст к int.
Если компилятор у тебя держит C++20, то вот так ещё можно:
std::string mac_addr = std::format("{:02X}-{:02X}-{:02X}-{:02X}-{:02X}-{:02X}",
pAdapterInfo->Address[0], pAdapterInfo->Address[1],
pAdapterInfo->Address[2], pAdapterInfo->Address[3],
pAdapterInfo->Address[4], pAdapterInfo->Address[5]);
но я пока таких не встречал.
https://forum.sources.ru/index.php?showtopic=420943&view=findpost&p=3842545
Метки:
C/C++:
Общие вопросы
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-