Converting a Datatype to a Stream of Bytes

Sometimes you need to convert a certain datatype to its binary stream ofbytes. An easy way to do it is to create a union that has two members:the datatype in question and an array of characters with a matchingsize. For example, to examine the binary representation of a pointer toa member function, the following program assigns the address of themember function f() to the union member p and then it examines thecorresponding character array bin_ptr:

   class A   {   public:    void f();  };  typedef void (A::*pmf)(); // pointer to member   union U  {    pmf p;    unsigned char bin_ptr[sizeof(pmf)];  };  int main()  {    U u = {0}; // initialize     u.p = &A::f; // assign member function's address      for (int j = 0; j< sizeof (U); j++)      cout<< (int)u.bin_ptr[j]<<" "; // display each byte in p  }
Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: