Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.135.224] |
|
Сообщ.
#1
,
|
|
|
всем привет, как вот это сделать на C++ ?
sprintf(mac_addr, "%02X-%02X-%02X-%02X-%02X-%02X", pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2], pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]); |
Сообщ.
#2
,
|
|
|
Чётъмолчат все. Вот, влобное:
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::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(); Если компилятор у тебя держит 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]); |
Сообщ.
#3
,
|
|
|
Цитата Qraizer @ Если вдруг pAdapterInfo->Address имеет неподходящий тип, то нужен ещё каст к int. нет не имеет, Добавлено Цитата Qraizer @ Чётъмолчат все. потому не знают, привыкли к Си и живут как после свадьбы католической Добавлено Цитата Qraizer @ Если компилятор у тебя держит 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]); gcc не пойдет? а clang ? |
Сообщ.
#4
,
|
|
|
Пока <format> никто не поддерживает. Там, как бы, работы много по реализации, и её ещё нужно хорошенько протестировать.
|
Сообщ.
#5
,
|
|
|
Цитата Qraizer @ Пока <format> никто не поддерживает. Там, как бы, работы много по реализации, и её ещё нужно хорошенько протестировать. Больше чем в сишной функции? И что мешает ее просто обернуть ? |
Сообщ.
#6
,
|
|
|
Больше. К тому же они не эквивалентны. Посмотри в format library
|
Сообщ.
#7
,
|
|
|
Я счас осваиваю Cyber, пока хочу поменять MAC address, platform independent, мне нужен Boost? или обычного Си вполне хватит? |
Сообщ.
#8
,
|
|
|
Откуда ж я знаю. Так-то хватит и ассемблера...
|