Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to produce hex output with boost::format?

Tags:

c++

boost

Consider the following :

#include <vector>
#include <string>
#include <iostream>

#include <boost/format.hpp>
#include <boost/assign.hpp>
#include <boost/assign/list_of.hpp>
#include <boost/assign/std/vector.hpp>

using namespace std;

typedef unsigned char byte;
typedef vector<byte> byte_array;

const byte_array bytes = list_of(0x05)(0x04)(0xAA)(0x0F)(0x0D);

int main()
{
    const string formatter = "%1%-%2%-%3%-%4%-%5%";
    const string result = (format(formatter)
                           % bytes[0]
                           % bytes[1]
                           % bytes[2]
                           % bytes[3]
                           % bytes[4]
                                    ).str();
    cout << result << endl;
    return 0;
}

I'd like to see the result printed as : "05-04-AA-0F-0D" . What do I need to do to the formatter string to achieve that ?

like image 249
Maciek Avatar asked Nov 04 '09 14:11

Maciek


1 Answers

Compiled and tested:

#include <boost/format.hpp>
#include <iostream>

using namespace std;
using namespace boost;

int main()
{
    unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };

    cout << format("%02X-%02X-%02X-%02X-%02X")
                % arr[0]
                % arr[1]
                % arr[2]
                % arr[3]
                % arr[4]
         << endl;
}
like image 155
Kaz Dragon Avatar answered Sep 23 '22 04:09

Kaz Dragon