将char指针(char*)转换为struct

Inf*_*One 5 c++

我有一个结构:

//Custom packet structure.
struct UserPacket
{
 __int64 pingTime;
} CustomPacket;
Run Code Online (Sandbox Code Playgroud)

我已经想出如何将它转换为char*.现在我想将char*转换回struct.有什么建议?

Zol*_*oli 10

如果它是C++:

char* theCharPtr; // has your converted data

UserPacket* fromChar = reinterpret_cast<UserPacket*>(theCharPtr);
Run Code Online (Sandbox Code Playgroud)

  • 由于这个线程是一个突出的搜索结果,应该注意的是,从标准的"[[un] signed] char*"到"SomethingElse*"的转换并不是正式有效的.严格的别名规则只允许`SomethingElse*`到`char*`.当然,大多数实现_do_允许这样做并且做大多数人所期望的 - 并且fwiw,我有时会利用它 - 但它应该始终突出警告它不是保证行为.特别是可以想象,在某些实现中,生成的`SomethingElse`包含一个现在未对齐的基本类型成员,使程序在运行时崩溃 (3认同)

Spa*_*rky 5

Typecast吧.以下是一些示例(两个使用类型转换).

CustomPacket  customPacket;

char *          p = (char *) &customPacket;

CustomPacket *  pPacket    = (CustomPacket *) p;
CustomPacket *  pAlternate = &customPacket;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 你应该避免在C++中使用c-style强制转换,因为编译器会尝试每一个强制转换,直到它找到"没问题".像@Zoltan一样使用它,因为你可以清楚地看到作者在做什么以及他在脑海里想到了什么. (2认同)