Получение буфера в поток строк в шестнадцатеричном представлении:

Если бы у меня был буфер вроде:

uint8_t buffer[32];

, и он был полностью заполнен значениями, как бы я мог поместить его в поток строк в шестнадцатеричном представлении с заполнением нулями небольших значений?

Я пробовал:

std::stringstream ss;
for (int i = 0; i < 32; ++i)
{
    ss << std::hex << buffer[i];
}

, но когда я извлекаю строку из потока, у меня возникает проблема: байты со значениями <16 принимают только один символ для представления, и я бы хотел, чтобы они были дополнены 0.

Например, если бы байты 1 и 2 в массиве были {32} {4}, мой поток строк имел бы:

204 instead of 2004

Могу ли я применить форматирование к потоку строк, чтобы каким-то образом добавить заполнение нулями? Я знаю, что могу сделать это с помощью sprintf, но потоки уже используются для большого количества информации, и это было бы большим подспорьем для достижения этой цели.

30
задан John Humphreys - w00te 3 October 2011 в 19:44
поделиться