Boost logo

Boost :

From: Jens Maurer (jmaurer_at_[hidden])
Date: 2000-03-10 17:10:19


"Borgerding, Mark A." wrote:
> The concept is a wrapper around an integer type that automatically convert
> to/from the desired byte order.

Please check out <boost/bin_ubin.hpp>, which already has the
equivalent of big_endian<> in a CPU-endianess independent
implementation.
A little_endian<> class complements this nicely. However,
we should merge it all in one header.
Furthermore, I think that "big_endian<>" and "little_endian<>"
express the semantics a bit better than the current "ubin32".

Aside from syntactical issues (namespace boost etc.), you
should probably use std::reverse from the STL in reverse_bytes()
instead of doing it your own (buggy) way:

> template <class T>
> inline
> T reverse_bytes(T d)
> {
> T orig(d);
> const char * pSrc = reinterpret_cast<const char *>(&orig);
> const char * pSrcEnd = pSrc + sizeof(T);
> char * pDest = reinterpret_cast<char *>(&d) + sizeof(T);

> for (;pSrc != pSrcEnd;++pSrc)
> *--pDest = *pSrc;
> return d;
>};

pDest and pSrc will overlap and half of T will be lost.

Jens Maurer


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk