Распечатка потока байтов в C++
С помощью этого сайта, 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);
}
Как я могу получить правильное значение на экране в десятичном и шестнадцатеричном виде?
1 ответ
Решение
Для гекса:
for (auto val : input) printf("\\x%.2x", val);
Для десятичной:
for (auto val : input) printf("%d ", val);