我有一個客戶端和服務器之間的接口,客戶端發送(1)一個無符號的值,(2)一個標誌,指示值是否有符號/無符號。然後,服務器會將無符號值轉換爲適當的類型。安全地轉換unsigned和signed int
我後來發現這是實現定義的行爲,我一直在閱讀它,但我似乎無法找到一個完全安全的合適解決方案?我讀過關於類型雙擊,指針轉換和memcpy。
只會使用聯合類型的工作?包含signed和unsigned int的UnionType以及signed/unsigned標誌。對於有符號值,客戶端設置聯合的簽名部分,服務器讀取簽名部分。相同的未簽名部分。還是我完全誤解了一些東西?
問題:我怎麼知道這種情況下針對特定場景的特定行爲,例如,在PPC上的windriver diab?我在如何找到這樣的文檔方面有點遺憾。
除非您遇到使用類似補碼或符號大小的系統,否則我認爲您使用的所有內容都將以同樣的方式定義unsigned-> signed轉換。 – user2357112
當客戶端發送一個無符號值但發送了簽名標誌時應該發生什麼? –
你的代碼如何處理簽名標誌? (因爲C++有一個靜態類型系統,你需要在編譯時指定你的類型) –