8053 次
4 に答える
5
おそらく少し話題から外れていますが、私は個人的にBoost.Formatを使用します:
boost::format fmt("%02X-%02X-%02X-%02X-%02X-%02X");
for (int i = 0; i != 6; ++i)
fmt % static_cast<unsigned int>(MACData[i]);
std::cout << fmt << std::endl;
于 2011-01-03T19:55:27.987 に答える
4
このようにすることができます(アプリの既存のデザインを変更せずに(できないと思います。そうでなければ、おそらくそうするでしょう:)))
void printMacToStream(std::ostream& os, unsigned char MACData[])
{
// Possibly add length assertion
char oldFill = os.fill('0');
os << std::setw(2) << std::hex << static_cast<unsigned int>(MACData[0]);
for (uint i = 1; i < 6; ++i) {
os << '-' << std::setw(2) << std::hex << static_cast<unsigned int>(MACData[i]);
}
os.fill(oldFill);
// Possibly add:
// os << std::endl;
}
使用法:
std::stringstream ss;
printMacToStream(ss, arrayWIthMACData);
更新:HEX形式:)
于 2011-01-03T19:44:42.487 に答える
1
char prev = stream.fill('0'); // save current fill character
for(int i=0; i<5; i++)
stream << setw(2) << MACData[i] << '-';
stream << setw(2) << MACData[5];
stream.fill(prev); // restore fill character
于 2011-01-03T19:49:10.473 に答える
1
まず、C++ ストリームとマニピュレータを使用するようにコードを変換する必要があります。
std::cout << std::hex << std::setw(2) << std::setfill('0') << MACData[0] ...
次に<<
、左側のストリームと右側のクラスの演算子をオーバーロードする必要があります。
于 2011-01-03T19:49:16.697 に答える