看板 C_Sharp 關於我們 聯絡資訊
想請問 C# 要如何達到自訂數據長度 主要是用來做bit位移 內建最多就long 64bit 需要資料長度120bit 感覺struct或是用 array 兜出來 但抓不到想法要如何兜 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.109.68 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1583219004.A.FC5.html
petercoin: BitArray不知道符不符合你的使用情境? 03/03 15:19
我看看是否 bitArray 否可行 其實主要是要將 RGB 24bit 轉成 RGB 30bit 例如 RGB 0xFF 0xFF 0xFF (11111111 11111111 11111111) 轉成 RGB 0011111111 0011111111 0011111111 再排成 byte (缺失高位元先補零) RGB 00111111 11001111 11110011 ..... 兩者最小公倍數120bit, 所以才想說能否有120bit, 又支援 << , & , | 運算等等 想到最笨的做法就是 byte array 全部轉成 120 長度字串, 再取其中8個字串轉成byte 只是想說有沒有跟優雅的寫法 ※ 編輯: abc95007 (180.217.109.68 臺灣), 03/03/2020 16:09:15
james732: https://tinyurl.com/y6y6qg2c BigInteger? 03/03 20:20
s4300026: unsafe (誤) 03/03 20:45
感謝 BigInteger 可行! ※ 編輯: abc95007 (180.217.109.68 臺灣), 03/04/2020 11:24:10
Litfal: 你這需求其實蠻稀有的,圖像處理通常直升16bits,32bits甚 03/04 14:15
Litfal: 至double,處理完後再依輸出10bits做round/truncate,甚至 03/04 14:15
Litfal: dithering 03/04 14:15
因為最後要是產生 bin 檔丟入IC, IC 再去組成10bit 24bit 與 30bit 最小公倍數又可整除 byte 就是120bit大小 ※ 編輯: abc95007 (122.116.139.44 臺灣), 03/05/2020 00:38:52
ssccg: 不懂為什麼這樣要120bit,只是24轉32不是嗎? 03/05 10:06
ssccg: 30,感覺32bits夠用 03/05 10:07
Litfal: 他是要做solid而不是常用的每一點3*10bit int32 03/05 14:03
Litfal: int32裡面多的2bits還要給下一點用 03/05 14:04
Litfal: 純資料處理我是會用bytes陣列和unsafe啦,用bigint還得遵 03/05 14:09
Litfal: 守它的規則(little endian,正負號等) 03/05 14:09
ssccg: 我的意思就是其實也可自己取byte[n] ~ byte[n+3]丟進int32 03/06 14:20
ssccg: 轉完後再把int32拆開丟進byte[m](x) ~ byte[m+3或4](y) 03/06 14:21
ssccg: 只要記好offset就好,不一定要到120bit為單位做吧 03/06 14:22
Litfal: 是阿,如果做成資料流,以色素為單位,一個int16做buffer 03/06 14:57
Litfal: 就可以處理了。但也能理解原po想用4個像素一起處理,輸出4 03/06 14:57
Litfal: 個30bits像素為一組,因為剛好是15bytes。 03/06 14:57
是沒想到用 int 當buffer, 當時只是想到有些byte可能會被切一半,或是被亂切 覺得麻煩, 只想說一次可以處理一組完整的單位, 有問題也比較好 debug XD ※ 編輯: abc95007 (122.116.139.44 臺灣), 03/07/2020 00:08:18
neo5277: 好像很有趣 03/07 02:30
nicetw20xx: 我會在C用bit field,x86電腦pg最小單位好像都byte 05/10 00:35