将int数组转换为char*

see*_*eed 4 c++

这可能吗?我想将其转换为char*,以便稍后检索此值.

GMa*_*ckG 7

当然:

int array[4] = {1, 2, 3, 4};
char* c = reinterpret_cast<char*>(array);
Run Code Online (Sandbox Code Playgroud)

有效范围是从.cc + sizeof(array).您可以对任何POD类型执行此操作.

您可以从一系列字节转回:

// assuming c above
int (&pArray)[4] = *reinterpret_cast<int(*)[4]>(c);
Run Code Online (Sandbox Code Playgroud)

这保证有效.但是,似乎你正在尝试通过网络发送内容,这可能会引入其他问题


您正在寻找的过程称为序列化(并有一个FAQ条目).这是当您获取一个对象时,将其转换为一系列位,以后可以将其"反序列化"到原始对象中.

在多个平台上完成这项工作可能很棘手,因为您需要确保序列化为特定格式,并且每个平台都知道它应该如何从该格式读取.(例如,big-endian平台在发送之前可能总是转换为little-endian,并且在接收时也会转换回big-endian.)你不能将非POD类型视为字节流(例如std::string),所以你需要为这些函数编写序列化函数,将其数据转换为字节流,并使用反序列化函数将其转换回来.

我特别喜欢Boost这样做的方式,如果可以,我可以使用他们的序列化库.它们基本上首先定义用于序列化基本类型的例程,然后通过构建它来序列化更复杂的类型.当然,Boost也有他们的ASIO库为你做套接字.

  • 然而,问题没有明确说明. (3认同)
  • @Frustrated:哈哈,它完全打印出一个笑脸.我是坏人,并明确地计划好了. (2认同)