当前位置:  开发笔记 > 编程语言 > 正文

将int数组转换为char*

如何解决《将int数组转换为char*》经验,为你挑选了1个好方法。

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



1> GManNickG..:

当然:

int array[4] = {1, 2, 3, 4};
char* c = reinterpret_cast(array);

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

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

// assuming c above
int (&pArray)[4] = *reinterpret_cast(c);

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


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

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

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


然而,问题没有明确说明.
@Frustrated:哈哈,它完全打印出一个笑脸.我是坏人,并明确地计划好了.
推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有