obviously, the expression "trans.get_data_ptr()" will evaluate to a pointer of some kind.
because the code is using a reinterpret_cast the i suppose the type of this pointer is something different from a char pointer.
the reason you use reinterpret_cast is to change one variable to a fundamentally different variable.
this means that it can cast an int to a character pointer for example, it can cast a stream to an int.
basically, it changes the nature of the expression.
reinterpret_cast to unsignedchar*, is most likely used to examine the object representation of whatever trans.get_data_ptr() is pointing to, but it's hard to say for certain without context.