gpt4 book ai didi

c++ - 在 C++ 中将字符串解释为打包的二进制数据

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:18 28 4
gpt4 key购买 nike

我对在 C++ 中将字符串解释为压缩二进制数据有疑问。在 python 中,我可以使用结构模块。 C++ 中是否有模块或方法可以在不嵌入 Python 的情况下将字符串解释为打包的二进制数据?

最佳答案

如前所述,最好将其视为字节数组(字符或无符号字符),可能保存在 std::vector 中,而不是字符串。一个字符串以 null 结尾,那么如果二进制数据的一个字节的值为零会发生什么?

您可以将数组中的指针转换为指向您的结构的指针,或者将数据复制到结构上:

#include <memory>

#pragma pack ( push )
#pragma pack( 1 );

struct myData
{
int data1;
int data2;
// and whatever
};

#pragma pack ( pop )


char* dataStream = GetTheStreamSomehow();

//cast the whole array
myData* ptr = reinterpret_cast<myData*>( dataStream );
//cast from a known position within the array
myData* ptr2 = reinterpret_cast<myData*>( &(dataStream[index]) );

//copy the array into a struct
myData data;
memcpy( &data, dataStream, sizeof(myData) );

如果您将数据流放在 vector 中,[] 运算符仍然有效。 pragma pack 声明确保结构是单字节对齐的——研究这个留给读者作为练习。 :-)

关于c++ - 在 C++ 中将字符串解释为打包的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9903905/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com