format — распечатывает поток байтов в переполнении стека

С помощью этого сайта, C ++ int в байтовый массив, У меня есть код для сериализации Int в байтовый поток.

Данные потока байтов из целочисленного значения 1234 — это «\ x00 \ x00 \ x04 \ xd2» в формате с прямым порядком байтов, и мне нужно придумать служебную функцию для отображения потока байтов. Это моя первая версия.

#include <iostream>
#include <vector>

using namespace std;

std::vector<unsigned char> intToBytes(int value)
{
std::vector<unsigned char> result;
result.push_back(value >> 24);
result.push_back(value >> 16);
result.push_back(value >>  8);
result.push_back(value      );
return result;
}

void print(const std::vector<unsigned char> input)
{
for (auto val : input)
cout << val; // <--
}

int main(int argc, char *argv[]) {
std::vector<unsigned char> st(intToBytes(1234));
print(st);
}

Как я могу получить правильное значение на экране в десятичном и шестнадцатеричном виде?

0

Решение

Для гекса:

for (auto val : input) printf("\\x%.2x", val);

Для десятичной:

for (auto val : input) printf("%d ", val);
4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector