3 votes

Impression d'un flux d'octets en C++

Avec l'aide de ce site, C++ int vers byte array J'ai un code pour sérialiser un int dans un flux d'octets.

Les données du flux d'octets de la valeur entière 1234 sont ' \x00\x00\x04\xd2 ' au format big endian, et je dois trouver une fonction utilitaire pour afficher le flux d'octets. Voici ma première version.

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

Comment puis-je obtenir la valeur correcte à l'écran en décimal et en hexadécimal ?

11voto

Inspired Points 7856

Pour l'hexagone :

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

Pour les décimales :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X