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]);
}