print mystr biblioteca c++ stringstream

c++ - mystr - stringstream java



Conseguir un búfer en una cadena en representación hexadecimal: (2)

Si tuviera un búfer como:

uint8_t buffer[32];

y se llenó completamente de valores, ¿cómo podría incluirlo en una cadena de caracteres, en representación hexadecimal, con relleno 0 en valores pequeños?

Lo intenté:

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

pero cuando saco la cadena del flujo de cadenas, tengo un problema: los bytes con valores <16 solo toman un carácter para representar, y me gustaría que estuvieran rellenados con 0.

Por ejemplo, si los bytes 1 y 2 en la matriz fueran {32} {4} mi cadena de caracteres tendría:

204 instead of 2004

¿Puedo aplicar el formato al stringstream para agregar el relleno 0 de alguna manera? Sé que puedo hacer esto con sprintf, pero los flujos ya se están usando para mucha información y sería de gran ayuda lograr esto de alguna manera.


Mire los modificadores de flujo: std::setw y std::fill .


std::stringstream ss; ss << std::hex << std::setfill(''0''); for (int i = 0; i < 32; ++i) { ss << std::setw(2) << static_cast<unsigned>(buffer[i]); }