C 結構體和位元組陣列的轉換函式

2022-02-08 07:03:39 字數 504 閱讀 1592

在通訊過程中,一般我們都會操作到位元組陣列.特別是希望在不同語言程式設計進行操作的時候.

雖然c#提供了序列化的支援,不用位元組陣列也行.但操作位元組陣列肯定會碰到.

一般都會採用結構來表示位元組陣列.但結構與位元組陣列直接的轉換實在很麻煩.

位元組操作不但容易出錯,而且每增加乙個結構,就自己實現一遍,實在是煩不勝煩.

有沒有簡單的方法呢?當然有.可以採用非託管區的一些方法來實現.

首先,匯入命名空間:system.runtime.interopservices;

定義結構的時候,要給結構指定特性.

如:你可以修改特性的屬性,來更改在記憶體的布局和排列.

好,接下來將結果轉換為位元組資料.為了支援各種結構,我採用泛型的做法.這樣編譯器可以幫助我們檢查型別是否正確.

將位元組陣列轉換為指定結構

雖然我對t型別進行了限制,但如果結構沒有指定特性的話,執行不會出現問題,但邏輯可能會出現一些問題,出現了你不想要的結果.這是必須注意的.

那怎麼使用這些**呢?

C 結構體和位元組陣列的轉換函式

在通訊過程中,一般我們都會操作到位元組陣列.特別是希望在不同語言程式設計進行操作的時候.雖然c 提供了序列化的支援,不用位元組陣列也行.但操作位元組陣列肯定會碰到.一般都會採用結構來表示位元組陣列.但結構與位元組陣列直接的轉換實在很麻煩.位元組操作不但容易出錯,而且每增加乙個結構,就自己實現一遍,實...

C 結構體和位元組陣列的轉換

c 結構體和位元組陣列的轉換 在寫c tcp通訊程式時,傳送資料時,只能傳送byte陣列,處理起來比較麻煩不說,如果是和vc6.0等寫的程式通訊的話,很多的都是傳送結構體,在vc6.0中可以很方便的把乙個char陣列轉換為乙個結構體,而在c 卻不能直接把byte陣列轉換為結構體,要在c 中傳送結構體...

C 結構體和位元組陣列的轉換

本文主要起源於專案從c 轉到c 時碰到的問題,即套接字傳送資訊時的型別轉換。在c 中,套接字傳送和接收的型別為字元陣列char,而char與結構體struct可以直接進行顯式轉換就可以 在c 中,sockets類和networkstream類傳送和接收的型別為位元組陣列byte,而它與結構體的轉換並...