字节数组及其大小的良好表示

Dej*_*jwi 0 c++ bytearray

你会如何很好地表示字节数组及其大小?我想存储(在主存储器或文件中)原始字节数组(无符号字符),其中前2/4字节将表示其大小.但是对这种阵列的操作看起来不太好:

void func(unsigned char *bytearray)
{
  int size;
  memcpy(&size, bytearray, sizeof(int));
  //rest of operation when we know bytearray size
}
Run Code Online (Sandbox Code Playgroud)

我怎么能避免这种情况?我想一个简单的结构:

struct bytearray
{
  int size;
  unsigned char *data;
};

bytearray *b = reinterpret_cast<bytearray*>(new unsigned char[10]);
b->data = reinterpret_cast<unsigned char*>(&(b->size) + 1);
Run Code Online (Sandbox Code Playgroud)

我可以访问bytearray的大小和数据部分.但它看起来仍然很难看.你能推荐另一种方法吗?

Ern*_*ill 5

除非你有一些压倒性的理由不这样做,只要做惯用的事情并使用std :: vector <unsigned char>.