伊莉討論區
標題:
C
[打印本頁]
作者:
mdlin
時間:
2018-7-31 10:26 PM
標題:
C
本帖最後由 mdlin 於 2018-7-31 10:26 PM 編輯
小弟不才, 敢問各位高手,原本C語言中的寫法
typedef union
{
struct
{
unsigned char Clock;
unsigned char Time;
unsigned char Date;
unsigned char Year;
} feild;
unsigned short reg32;
} tpTimeFrame;
tpTimeFrame TimeFrame;
TimeFrame.reg32 = 0x00000000;
有什麼方法可以用C#實現 ?
作者:
jackyo04
時間:
2018-8-1 08:48 AM
據我了解,好像要自己想辦法設計XD
網路上有提供方法可以參考
https://www.codeproject.com/Questions/141385/typedef-in-C
或者你用個Class包起來做呢?
作者:
johnwanz
時間:
2018-8-1 09:29 AM
C# 應該是沒有 union.
這個看起來是C語言中, 對暫存器的控制寫法.
在物件導向設計原則裡面, 其實不傾向將上下層結構直接透通, 會造成設計上的依賴性, 未來不易變動. 可以考慮透過設計一個中間層, 一個存取介面Class, 將暫存器存取邏輯封裝在裡面.
就外部而言, 你還是可讀取或設定局部參數, 也可以讀寫整個資料.
內部在未來可以依照不同的實作, 進行修改. 以利於未來其他案子的應用.
當然, 前提是還有打算要沿用, 不是拋棄式的話...
如果你還是想要用C#來寫union, 這裡有一篇文章, 不過我沒有試過. (因為還沒有遇到"必須"在C#中這樣寫)
How To Simulate C++ Union In C#?
作者:
mdlin
時間:
2018-8-1 10:30 AM
感謝各位大大提供回覆,暫存器常用此種寫法,還有通訊也常用到。舉例來說,如UART通訊收到16 byte 資料,其中前兩個Byte 是Header , 後面是Command , Payload , CRC , 等等。不同的Command還有不同方式解釋這16 byte 資料。不知到C#有什麼方式可以解決此問題 ?
作者:
jackyo04
時間:
2018-8-1 11:20 AM
不就分別存在不同的陣列裡就可以了嗎..
想要長什麼樣子可以自己想
或是看要不要用個Class當容器呢
作者:
virdoll
時間:
2018-8-6 03:53 PM
用過陣列存放; 或是轉成字串再用正規式處理
或者是用Class處理。
作者:
advantise
時間:
2018-8-27 01:49 PM
只能存在4 bytes 的 array, reg32的值要用那 4 bytes array另外去算。
歡迎光臨 伊莉討論區 (http://www46.eyny.com/)
Powered by Discuz!