[英]converting C to C#
我正在嘗試將此C代碼轉換為C#,是否有一個等效於C聯合typedef的C#?
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;
} S_un;
} IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;
謝謝。
您可以查看以下頁面 。 就是說,在.NET中,您擁有允許直接使用套接字和TCP / IP的類,例如Socket,TcpListener,TcpClient,而無需盲目轉換C代碼。
雖然其他人肯定有他的道理-這很可能是你真的不需要做的事- 有一種方法來模擬使用C#工會StructLayoutAttribute (例如模擬工會在這里 )。
但是不要這樣做。 這個C聯合的目的似乎是允許對4字節長的部分進行位旋轉。 以這種方式使用聯合取決於目標體系結構的字節順序知識,這是C#無法保證的。
在C#中-或任何其他語言,其中便攜性是一個問題-如果你想獲取或設置高字節/低字節/等你需要用明確的一點是說明移這里 。
但是那也不做。 就像別人說的那樣,不要移植此代碼。 有人已經為您完成了此任務,很可能是內置庫中的Microsoft;)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.