我有一個結構:轉換字符指針(字符*)爲結構
//Custom packet structure.
struct UserPacket
{
__int64 pingTime;
} CustomPacket;
我已經想通了如何將它轉換爲char *。現在我想將char *轉換回結構。有什麼建議麼?
我有一個結構:轉換字符指針(字符*)爲結構
//Custom packet structure.
struct UserPacket
{
__int64 pingTime;
} CustomPacket;
我已經想通了如何將它轉換爲char *。現在我想將char *轉換回結構。有什麼建議麼?
指定它。這裏有一些例子(兩個使用類型轉換)。
CustomPacket customPacket;
char * p = (char *) &customPacket;
CustomPacket * pPacket = (CustomPacket *) p;
CustomPacket * pAlternate = &customPacket;
希望這會有所幫助。
非常感謝。這兩個工作。我感謝您的幫助。 – InfinateOne 2010-04-11 11:43:53
您應該避免使用C++進行C風格的轉換,因爲編譯器會嘗試每個轉換,直到找到「可以」的轉換爲止。像@Zoltan一樣使用它,因爲那樣你就可以清楚地看到作者正在做什麼以及他腦子裏有什麼。 – jaor 2014-07-30 05:36:02
@jaor - 迷人!我之前對C++並不瞭解。我每天都在學習新的東西。 :) – Sparky 2014-07-30 20:19:29
如果是C++:
char* theCharPtr; // has your converted data
UserPacket* fromChar = reinterpret_cast<UserPacket*>(theCharPtr);
非常感謝。這兩個工作。我感謝您的幫助。 – InfinateOne 2010-04-11 11:43:30
由於該線程是一個突出的搜索結果,因此應該注意,從[[un] signed] char *'轉換爲'SomethingElse *'不是由標準正式生效。嚴格的別名規則只允許'SomethingElse *'爲'char *'。當然,大多數實現方式都允許這種做法符合大多數人的期望 - 有時我會利用這一點 - 但它總是應該突出警告它並不是保證行爲。特別是可以想象,在某些實現中,生成的'SomethingElse'包含一個基本類型的成員,現在這個成員沒有對齊,從而導致程序在運行時崩潰 – 2016-01-06 12:16:09
你如何將其轉換回完全取決於你是怎麼做到的正向轉換。請發佈轉發轉化的詳細信息。 – 2010-04-11 11:35:08
看起來像是在嘗試序列化數據。在這裏要非常小心填充和對齊問題(儘管你的單個成員的例子應該沒問題)。你是否將char *寫入文件或其他一些流程中?可能還有其他問題需要考慮,如排序。 – philsquared 2010-04-11 12:25:24
如果數據在不同計算機之間傳遞(看起來像),請小心字節順序。 – Potatoswatter 2010-04-11 13:06:26